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::Initialize
と Terminate
にも渡されます。
pOverlapped
作業項目がキューに格納されたキューを作成するために使用される、オーバーラップ された構造体へのポインター。
WorkerArchetype::Initialize
要求が WorkerArchetype::Execute
に渡される前に worker オブジェクトを初期化するために呼び出されます。
BOOL Initialize(void* pvParam) throw();
パラメーター
pvParam
worker クラスによって認識されるカスタム パラメーター。 WorkerArchetype::Terminate
と WorkerArchetype::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::Initialize
と WorkerArchetype::Execute
にも渡されます。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示