Edit

Share via


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.

See also

Concepts
ATL COM Desktop Components