次の方法で共有


スレッド プール 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

 

スレッド プールの

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