CNonStatelessWorker クラス
スレッド プールから要求を受信し、各要求で作成および破棄されたワーカー オブジェクトに渡します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
template <class Worker>
class CNonStatelessWorker
パラメーター
ワーカー
CThreadPool でキューに入れられた要求の処理に適したワーカーのアーキタイプに準拠するワーカー スレッド クラス。
メンバー
パブリック typedef
名前 | 説明 |
---|---|
CNonStatelessWorker::RequestType | WorkerArchetype::RequestType の実装。 |
パブリック メソッド
名前 | 説明 |
---|---|
CNonStatelessWorker::Execute | WorkerArchetype::Execute の実装。 |
CNonStatelessWorker::Initialize | WorkerArchetype::Initialize の実装。 |
CNonStatelessWorker::Terminate | WorkerArchetype::Terminate の実装。 |
解説
このクラスは、CThreadPool で使用するための、単純なワーカー スレッドです。 このクラスは、独自の要求処理機能を備えていません。 代わりに、"ワーカー" のインスタンスが、要求ごとに 1 つインスタンス化され、そのメソッドの実装がそのインスタンスに委任されます。
このクラスの利点は、既存のワーカー スレッド クラスの状態モデルを変更するための便利な方法を備えているという点です。 CThreadPool
によって、スレッドの有効期間にわたって単一ワーカーが作成されます。そのため、ワーカー クラスによって状態が保持される場合は、複数の要求にわたって保持されます。 CThreadPool
で使用する前に、CNonStatelessWorker
テンプレートでそのクラスをラップするだけで、ワーカーの有効期間と、それによって保持される状態は、単一要求に制限されます。
要件
ヘッダー: atlutil.h
CNonStatelessWorker::Execute
void Execute(
Worker::RequestType request,
void* pvWorkerParam,
OVERLAPPED* pOverlapped);
解説
このメソッドを使用すると、"ワーカー" クラスのインスタンスがスタック上に作成され、そのオブジェクトで Initialize が呼び出されます。 また、初期化が成功した場合は、このメソッドによって、同じオブジェクトで Execute と Terminate も呼び出されます。
CNonStatelessWorker::Initialize
WorkerArchetype::Initialize の実装。
BOOL Initialize(void* /* pvParam */) throw();
戻り値
常に TRUE が返されます。
解説
このクラスでは、Initialize
での初期化を行いません。
CNonStatelessWorker::RequestType
WorkerArchetype::RequestType の実装。
typedef Worker::RequestType RequestType;
解説
このクラスでは、"ワーカー" テンプレート パラメーターに使用されるクラスと同じ種類の作業項目を処理することができます。 CNonStatelessWorker の概要に関する記事を参照してください。
CNonStatelessWorker::Terminate
WorkerArchetype::Terminate の実装。
void Terminate(void* /* pvParam */) throw();
解説
このクラスでは、Terminate
でクリーンアップを実行しません。