Worker Archetype
Classes that conform to the worker archetype provide the code to process work items queued on a thread pool.
Implementation
To implement a class conforming to this archetype, the class must provide the following features:
Method | Description |
---|---|
Initialize | Called to initialize the worker object before any requests are passed to Execute. |
Execute | Called to process a work item. |
Terminate | Called to uninitialize the worker object after all requests have been passed to Execute. |
Typedef | Description |
---|---|
RequestType | A typedef for the type of work item that can be processed by the worker class. |
A typical worker class looks like this:
class CMyWorker
{
public:
typedef MyRequestType RequestType;
BOOL Initialize(void* pvWorkerParam);
void Execute(MyRequestType request, void* pvWorkerParam, OVERLAPPED* pOverlapped);
void Terminate(void* pvWorkerParam);
};
Existing Implementations
These classes conform to this archetype:
Class | Description |
---|---|
CNonStatelessWorker | Receives requests from the thread pool and passes them on to a worker object that is created and destroyed for each request. |
Use
These template parameters expect the class to conform to this archetype:
Parameter name | Used by |
---|---|
Worker | CThreadPool |
Worker | CNonStatelessWorker |
Requirements
Header: atlutil.h
WorkerArchetype::Execute
Called to process a work item.
void Execute(
RequestType request,
void* pvWorkerParam,
OVERLAPPED* pOverlapped);
Parameters
request
The work item to be processed. The work item is of the same type as RequestType
.
pvWorkerParam
A custom parameter understood by the worker class. Also passed to WorkerArchetype::Initialize
and Terminate
.
pOverlapped
A pointer to the OVERLAPPED structure used to create the queue on which work items were queued.
WorkerArchetype::Initialize
Called to initialize the worker object before any requests are passed to WorkerArchetype::Execute
.
BOOL Initialize(void* pvParam) throw();
Parameters
pvParam
A custom parameter understood by the worker class. Also passed to WorkerArchetype::Terminate
and WorkerArchetype::Execute
.
Return Value
Return TRUE on success, FALSE on failure.
WorkerArchetype::RequestType
A typedef for the type of work item that can be processed by the worker class.
typedef MyRequestType RequestType;
Remarks
This type must be used as the first parameter of WorkerArchetype::Execute
and must be capable of being cast to and from a ULONG_PTR.
WorkerArchetype::Terminate
Called to uninitialize the worker object after all requests have been passed to WorkerArchetype::Execute
).
void Terminate(void* pvParam) throw();
Parameters
pvParam
A custom parameter understood by the worker class. Also passed to WorkerArchetype::Initialize
and WorkerArchetype::Execute
.