Share via


Worker の原型

worker の原型に準拠するクラスは、スレッド プールでキューに置かれた作業項目を処理するコードを提供します。

実装

この原型に準拠するクラスを実装するには、クラスにより次の機能が提供される必要があります。

メソッド 説明
Initialize 要求が Execute に渡される前に worker オブジェクトを初期化するために呼び出されます。
実行 作業項目を処理するために呼び出されます。
Terminate すべての要求が Execute に渡された後で worker オブジェクトを初期化前の状態に戻すために呼び出されます。
Typedef 説明
RequestType Worker クラスで処理できる作業項目の種類の typedef。

一般的な worker クラスは次のようになります。

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

   void Execute(MyRequestType request, void* pvWorkerParam, OVERLAPPED* pOverlapped);

   void Terminate(void* pvWorkerParam);
};

既存の実装

これらのクラスは、次の原型に準拠しています。

クラス 説明
CNonStatelessWorker スレッド プールから要求を受信し、それらを各要求で作成および破棄された worker オブジェクトに渡します。

用途

これらのテンプレート パラメーターは、クラスがこの原型に準拠していることを想定しています。

パラメーター名 使用者
ワーカー CThreadPool
ワーカー CNonStatelessWorker

必要条件

ヘッダー: atlutil.h

WorkerArchetype::Execute

作業項目を処理するために呼び出されます。

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

パラメーター

request
処理される作業項目。 作業項目の種類は RequestType と同じです。

pvWorkerParam
worker クラスによって認識されるカスタム パラメーター。 WorkerArchetype::InitializeTerminate にも渡されます。

pOverlapped
作業項目がキューに格納されたキューを作成するために使用される、オーバーラップ された構造体へのポインター。

WorkerArchetype::Initialize

要求が WorkerArchetype::Execute に渡される前に worker オブジェクトを初期化するために呼び出されます。

BOOL Initialize(void* pvParam) throw();

パラメーター

pvParam
worker クラスによって認識されるカスタム パラメーター。 WorkerArchetype::TerminateWorkerArchetype::Execute にも渡されます。

戻り値

正常に終了した場合は TRUE、失敗した場合は FALSE が返されます。

WorkerArchetype::RequestType

Worker クラスで処理できる作業項目の種類の typedef。

typedef MyRequestType RequestType;

解説

この型は、WorkerArchetype::Execute の最初のパラメーターとして使用する必要があり、ULONG_PTR との間でキャストできる必要があります。

WorkerArchetype::Terminate

すべての要求が WorkerArchetype::Execute に渡された後で worker オブジェクトを初期化前の状態に戻すために呼び出されます。

void Terminate(void* pvParam) throw();

パラメーター

pvParam
worker クラスによって認識されるカスタム パラメーター。 WorkerArchetype::InitializeWorkerArchetype::Execute にも渡されます。

関連項目

概念
ATL COM デスクトップ コンポーネント