PL/I のプログラムは、1 つまたは複数のプロシージャーからできています。 プログラムは、普通は単一の実行単位として実行されるか、単一の実行単位の一部として実行されます。 プロシージャーが別のプロシージャーを呼び出す場合、制御は呼び出されたプ ロシージャーに渡され、呼び出した側のプロシージャーの実行は、呼び出され たプロシージャーが制御を戻すまで中断されます。 このような単一の制御フローをともなう実行は、同期 フローといいます。
PL/I のマルチスレッド機能を使用すると、呼び出す側のプロシージャーから、 呼び出されたプロシージャーに制御が解放されません。 その代わりに、さらに追加の制御フローが確立され、両方のプロシージャーが並行して実行されます。 このような並行プロシージャーの実行は、非同期 フローといいます。
PL/I のマルチスレッド機能によって、PL/I プログラムの各部分の実行が複数の スレッドを使用して非同期に行えるようになります。 スレッドは、コンピューター・システムのリソースを獲得するために 競合する作業単位です。 スレッドは、OS PL/I におけるタスクとは同等ではありません。 あるプログラム内では主スレッドを除き、そのプログラム内にあるスレッドは 必ず他のスレッドから独立しており互いに無関係です。 あるプロシージャーが別のプロシージャーをスレッドとして呼び出す場合、 この処置は、スレッドの接続 または作成といいます。
1 つまたは複数のスレッドの実行が、1 つのプロセス内で起こること を PL/I プログラムと考えることができます。 PL/I は、複数のプロセスまたはタスクを作成したり管理したりする機能を持っ ていませんが、単一のプログラム (プロセス) において複数のスレッドを作成し たり管理したりすることはできます。
通常は、プロセスごとに 1 つのアプリケーション・スレッドがあります。 複数のスレッドを接続 (作成) して、次のようなことができます。