Archetyp procesu roboczego

Klasy zgodne z archetypem procesu roboczego zapewniają kod do przetwarzania elementów roboczych w kolejce w puli wątków.

Implementacja

Aby zaimplementować klasę zgodną z tym archetypem, klasa musi zapewniać następujące funkcje:

Metoda opis
Initialize Wywoływana w celu zainicjowania obiektu procesu roboczego przed przekazaniem żądań do wykonania.
Execute Wywoływane w celu przetworzenia elementu roboczego.
Terminate Wywoływana w celu niezainicjowania obiektu procesu roboczego po przekazaniu wszystkich żądań do wykonania.
Typedef opis
Requesttype Definicja typu dla typu elementu roboczego, który może być przetwarzany przez klasę procesu roboczego.

Typowa klasa procesu roboczego wygląda następująco:

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

   void Execute(MyRequestType request, void* pvWorkerParam, OVERLAPPED* pOverlapped);

   void Terminate(void* pvWorkerParam);
};

Istniejące implementacje

Te klasy są zgodne z tym archetypem:

Klasa opis
CNonStatelessWorker Odbiera żądania z puli wątków i przekazuje je do obiektu procesu roboczego, który jest tworzony i niszczony dla każdego żądania.

Używanie

Te parametry szablonu oczekują, że klasa będzie zgodna z tym archetypem:

Nazwa parametru Używana przez
Pracownik Cthreadpool
Pracownik CNonStatelessWorker

Wymagania

Nagłówek: atlutil.h

WorkerArchetype::Execute

Wywoływane w celu przetworzenia elementu roboczego.

void Execute(
    RequestType request,
    void* pvWorkerParam,
    OVERLAPPED* pOverlapped);

Parametry

Żądanie
Element roboczy do przetworzenia. Element roboczy ma taki sam typ jak RequestType.

pvWorkerParam
Niestandardowy parametr rozumiany przez klasę procesu roboczego. Przekazano również do WorkerArchetype::Initialize i Terminate.

POverlapped
Wskaźnik do struktury OVERLAPPED używanej do tworzenia kolejki, w której zostały kolejkowane elementy robocze.

WorkerArchetype::Initialize

Wywoływana w celu zainicjowania obiektu procesu roboczego przed przekazaniem żądań do WorkerArchetype::Executeobiektu .

BOOL Initialize(void* pvParam) throw();

Parametry

pvParam
Niestandardowy parametr rozumiany przez klasę procesu roboczego. Przekazano również do WorkerArchetype::Terminate i WorkerArchetype::Execute.

Wartość zwracana

Zwraca wartość TRUE w przypadku powodzenia, WARTOŚĆ FALSE w przypadku niepowodzenia.

WorkerArchetype::RequestType

Definicja typu dla typu elementu roboczego, który może być przetwarzany przez klasę procesu roboczego.

typedef MyRequestType RequestType;

Uwagi

Ten typ musi być używany jako pierwszy parametr WorkerArchetype::Execute i musi być w stanie rzutować do i z ULONG_PTR.

WorkerArchetype::Terminate

Wywoływana w celu niezainicjowania obiektu procesu roboczego po przekazaniu wszystkich żądań do WorkerArchetype::Executeobiektu ).

void Terminate(void* pvParam) throw();

Parametry

pvParam
Niestandardowy parametr rozumiany przez klasę procesu roboczego. Przekazano również do WorkerArchetype::Initialize i WorkerArchetype::Execute.

Zobacz też

Pojęcia
Składniki ATL COM pulpitu