Compartilhar via


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.

See Also

Archetypes
Concepts
ATL COM Desktop Components