次の方法で共有


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

WorkerArchetype::Execute の実装。

void Execute(
    Worker::RequestType request,
    void* pvWorkerParam,
    OVERLAPPED* pOverlapped);

解説

このメソッドを使用すると、"ワーカー" クラスのインスタンスがスタック上に作成され、そのオブジェクトで Initialize が呼び出されます。 また、初期化が成功した場合は、このメソッドによって、同じオブジェクトで ExecuteTerminate も呼び出されます。

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 でクリーンアップを実行しません。

関連項目

CThreadPool クラス
ワーカーのアーキタイプ
クラス