Worker Archetype
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at 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
.