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:

MethodDescription
InitializeCalled to initialize the worker object before any requests are passed to Execute.
ExecuteCalled to process a work item.
TerminateCalled to uninitialize the worker object after all requests have been passed to Execute.
TypedefDescription
RequestTypeA 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:

ClassDescription
CNonStatelessWorkerReceives 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 nameUsed by
WorkerCThreadPool
WorkerCNonStatelessWorker

Requirements

Header: atlutil.h

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.

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.

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.

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.

Archetypes
Concepts
ATL COM Desktop Components

Show: