スレッド プール API

スレッド プール アプリケーション プログラミング インターフェイス (API) は、オブジェクト ベースの設計を使用します。 次の各オブジェクトは、ユーザー モードのデータ構造で表されます。

  • プール オブジェクトは、作業の実行に使用できるワーカー スレッドのセットです。 各プロセスでは、必要に応じて異なる特性を持つ複数の分離プールを作成できます。 プロセスごとに既定のプールもあります。
  • クリーンアップ グループは、コールバック生成オブジェクトのセットに関連付けられます。 各クリーンアップ グループのメンバーであるすべてのオブジェクトを待機して解放する関数が存在します。 これにより、アプリケーションが作成したすべてのオブジェクトを追跡できなくなります。
  • 作業オブジェクトはプールに割り当てられ、必要に応じてクリーンアップ グループに割り当てられます。 これは投稿でき、プールからのワーカー スレッドがコールバックを実行する原因となります。 1 つの作業オブジェクトに複数の投稿が未処理の場合があります。それぞれコールバックが生成されます。 リソースがないため、事後操作は失敗できません。
  • タイマー オブジェクトは、コールバックのスケジュールを制御します。 タイマーの有効期限が切れるたびに、そのコールバックがワーカー プールにポストされます。 リソースがないため、タイマーの設定は失敗できません。
  • 待機オブジェクトは、待機可能なハンドルを待機する待機スレッドを引き起こします。 待機が満たされるか、タイムアウト期間が経過すると、待機スレッドは待機オブジェクトのコールバックを待機のワーカー プールにポストします。 リソースがないため、待機の設定は失敗できません。
  • I/O オブジェクトは、ファイル ハンドルをスレッド プールの I/O 完了ポートに関連付けます。 非同期 I/O 操作が完了すると、ワーカー スレッドは操作の状態を取得し、I/O オブジェクトのコールバックを呼び出します。

次の表では、元のスレッド プール API と現在のスレッド プール API の機能について説明します。

特徴 元の API 現在の API
同期 RegisterWaitForSingleObject
UnregisterWaitExの
CloseThreadpoolWaitをする
CreateThreadpoolWaitの
SetThreadpoolWaitの
WaitForThreadpoolWaitCallbacksの
仕事 QueueUserWorkItemの
CloseThreadpoolWorkの
CreateThreadpoolWorkの
SubmitThreadpoolWorkをする
TrySubmitThreadpoolCallbackの
WaitForThreadpoolWorkCallbacksの
タイマー CreateTimerQueueの
CreateTimerQueueTimerの
ChangeTimerQueueTimerの
DeleteTimerQueueTimerの
DeleteTimerQueueExの
CloseThreadpoolTimerをする
CreateThreadpoolTimerの
IsThreadpoolTimerSetの
SetThreadpoolTimerの
WaitForThreadpoolTimerCallbacksの
I/O BindIoCompletionCallbackの
CancelThreadpoolIoの
CloseThreadpoolIoをする
CreateThreadpoolIoの
StartThreadpoolIoをする
WaitForThreadpoolIoCallbacksの
クリーンアップ グループ CloseThreadpoolCleanupGroupの
CloseThreadpoolCleanupGroupMembersの
CreateThreadpoolCleanupGroupの
プール CloseThreadpoolをする
CreateThreadpoolの
SetThreadpoolThreadMaximumの
SetThreadpoolThreadMinimumの
コールバック環境 DestroyThreadpoolEnvironmentの
InitializeThreadpoolEnvironmentの
SetThreadpoolCallbackCleanupGroupの
SetThreadpoolCallbackLibraryの
SetThreadpoolCallbackPoolの
SetThreadpoolCallbackPriorityの
SetThreadpoolCallbackRunsLongの
コールバック CallbackMayRunLong
コールバックのクリーンアップ disassociateCurrentThreadFromCallbackの
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturnsの

 

スレッド プールの

スレッド プール関数の使用 の