CThreadPool クラス
このクラスには、ワーク アイテムのキューを処理するワーカー スレッドのプールが用意されています。
template <
class Worker,
class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
public IThreadPoolConfig
パラメーター
[ワーカ]
使用されるプロセス作業項目にコードを提供するスレッド プールで ワーカー元 に、クラスは列を試みてください。ThreadTraits
プールのスレッドを作成するために使用する関数を提供するクラス。
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
スレッド プールのコンストラクター。 |
|
スレッド プールのデストラクター。 |
パブリック メソッド
名前 |
説明 |
---|---|
IUnknown::AddRefの実装。 |
|
プール内のスレッドの数を取得するときにこのメソッドを呼び出します。 |
|
キューの作業項目に使用される I/O 完了ポートのハンドルを取得するときにこのメソッドを呼び出します。 |
|
プール内のスレッドの数を取得するときにこのメソッドを呼び出します。 |
|
スレッド プールがシャットダウンするまでスレッドを待機するミリ秒単位の最大時間を取得するときにこのメソッドを呼び出します。 |
|
スレッド プールを初期化するには、このメソッドを呼び出します。 |
|
IUnknown::QueryInterfaceの実装。 |
|
プールのスレッドが処理される作業項目をキューに配置するには、このメソッドを呼び出します。 |
|
IUnknown::Releaseの実装。 |
|
プール内のスレッドの数を設定するには、このメソッドを呼び出します。 |
|
スレッド プールがシャットダウンするまでスレッドを待機するミリ秒単位の最大時間を設定するには、このメソッドを呼び出します。 |
|
スレッド プールをシャットダウンするためにこのメソッドを呼び出します。 |
解説
プールのスレッドが作成され、プールが、のサイズが変更されて初期化時、またはシャットダウンまたは破棄されます。 クラスのインスタンスは ワーカー スレッド のプールの各ワーカー スレッドのスタック上に作成されます。 各インスタンスは、スレッドの有効期間に置かれます。
スレッドの作成の直後に、Worker::Initialize は、そのスレッドに関連付けられたオブジェクトで。 スレッドの破棄する直前に、Worker::Terminate が呼び出されます。 どちらのメソッド void* の引数を受け取る必要があります。 この引数の値は、CThreadPool::Initializeの pvWorkerParam のパラメーターでスレッド プールに渡されます。
作業で使用できるキューとワーカー スレッドに作業項目がある場合は、ワーカー スレッド キューから項目をプルし、そのスレッドのワーカー オブジェクトの [実行] のメソッドを呼び出します。 3 項目は、メソッドに渡されます: キュー、Worker::Initialize と Worker::Terminateに渡されると同じ pvWorkerParam ポインターからの I/O 完了ポートのキューに使用する オーバーラップ の構造体に対する項目。
クラスは、ワーカー スレッド プールで typedef を指定して列を行う項目の種類、Worker::RequestTypeを宣言します。 この型は ULONG_PTRとの間でキャストできる必要があります。
ワーカー クラスの例は CNonStatelessWorker クラスです。
継承階層
IUnknown
CThreadPool
必要条件
Header: atlutil.h