次の方法で共有


CThreadPool クラス

このクラスには、ワーク アイテムのキューを処理するワーカー スレッドのプールが用意されています。

template <
   class Worker,
   class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
   public IThreadPoolConfig

パラメーター

  • Worker
    worker archetype に準拠するクラス。このクラスには、スレッド プールのキューに置かれたワーク アイテムを処理するコードが用意されています。

  • ThreadTraits
    プール内にスレッドを作成するための関数が用意されたクラス。

解説

プール内のスレッドは、プールの初期化、サイズ変更、シャットダウン時に作成または破棄されます。 Worker クラスのインスタンスは、プール内の各ワーカー スレッドのスタックに作成されます。 各インスタンスが有効であるのは、スレッドの有効期間中です。

スレッドの作成後すぐにワーカー:。Initializeそのスレッドに関連付けられたオブジェクトで呼び出されます。 スレッドの破棄の前にすぐにワーカー:。Terminate呼び出されます。 これらのメソッドは、引数として void* を受け入れる必要があります。 この引数の値は、CThreadPool::Initialize メソッドの pvWorkerParam パラメーターを通じてスレッド プールに渡されます。

キューにワーク アイテムがあり、また、ワークで利用できるワーカー スレッドがある場合、ワーカー スレッドはキューからアイテムを取り出し、そのスレッドに関連した Worker オブジェクトの Execute メソッドを呼び出します。 3 つの項目は、メソッドに渡されます。アイテムが同じキューからpvWorkerParamに渡されるワーカー:。Initializeワーカー::Terminateとへのポインター、OVERLAPPED構造の IO 完了ポートのキューを使用します。

Worker クラスでは、スレッド プールでキューに置かれるアイテムの型が Worker::RequestType の typedef で宣言されます。 この型は ULONG_PTR に対して双方向にキャストできる必要があります。

Worker クラスの例として、CNonStatelessWorker クラス があります。

必要条件

**ヘッダー:**atlutil.h

参照

参照

IThreadPoolConfig インターフェイス

DefaultThreadTraits

その他の技術情報

CThreadPool のメンバー

ATL のクラス