| description | Learn more about: Worker Archetype | |
|---|---|---|
| title | Worker Archetype | |
| ms.date | 11/04/2016 | |
| helpviewer_keywords |
|
|
| ms.assetid | 834145cd-09d3-4149-bc99-620e1871cbfb |
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:
[!code-cppNVC_ATL_Utilities#137]
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 |
Header: atlutil.h
Called to process a work item.
void Execute(
RequestType request,
void* pvWorkerParam,
OVERLAPPED* pOverlapped);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.
Called to initialize the worker object before any requests are passed to WorkerArchetype::Execute.
BOOL Initialize(void* pvParam) throw();
pvParam
A custom parameter understood by the worker class. Also passed to WorkerArchetype::Terminate and WorkerArchetype::Execute.
Return TRUE on success, FALSE on failure.
A typedef for the type of work item that can be processed by the worker class.
typedef MyRequestType RequestType;
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.
Called to uninitialize the worker object after all requests have been passed to WorkerArchetype::Execute).
void Terminate(void* pvParam) throw();pvParam
A custom parameter understood by the worker class. Also passed to WorkerArchetype::Initialize and WorkerArchetype::Execute.