Share via


スレッド プール API

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

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

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

特徴量 元の API 現在の API
同期 RegisterWaitForSingleObject
UnregisterWaitEx
CloseThreadpoolWait
CreateThreadpoolWait
SetThreadpoolWait
WaitForThreadpoolWaitCallbacks
Work QueueUserWorkItem
CloseThreadpoolWork
CreateThreadpoolWork
SubmitThreadpoolWork
TrySubmitThreadpoolCallback
WaitForThreadpoolWorkCallbacks
Timer 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

 

スレッド プール

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