プロセスとスレッド
アプリケーションは、1 つ以上のプロセスで構成されます。 最も簡単な言葉で言えば、 プロセスは実行中のプログラムです。 1 つ以上のスレッドは、プロセスのコンテキストで実行されます。 スレッドは、オペレーティング システムがプロセッサ時間を割り当てる基本単位です。 スレッドは、現在別のスレッドによって実行されている部分を含め、プロセス コードの任意の部分を実行できます。
ジョブ オブジェクトを使用すると、プロセスのグループを 1 つの単位として管理できます。 ジョブ オブジェクトは、それらに関連付けられているプロセスの属性を制御する、ナマブル、セキュリティ保護可能、共有可能なオブジェクトです。 ジョブ オブジェクトに対して実行される操作は、ジョブ オブジェクトに関連付けられているすべてのプロセスに影響します。
スレッド プールは、アプリケーションに代わって非同期コールバックを効率的に実行するワーカー スレッドのコレクションです。 スレッド プールは、主にアプリケーション スレッドの数を減らし、ワーカー スレッドの管理を提供するために使用されます。
ファイバーは、アプリケーションによって手動でスケジュールする必要がある実行の単位です。 ファイバーは、それらをスケジュールするスレッドのコンテキストで実行されます。
ユーザー モード スケジューリング (UMS) は、アプリケーションが独自のスレッドのスケジュール設定に使用できる軽量メカニズムです。 UMS スレッドは、1 つのスレッドのスレッド コンテキストを共有する代わりに、各 UMS スレッドに独自のスレッド コンテキストがある点で ファイバー とは異なります。