Archetyp pracovního procesu

Třídy, které odpovídají archetypu pracovního procesu , poskytují kód pro zpracování pracovních položek zařazených do fronty ve fondu vláken.

Implementace

Chcete-li implementovat třídu, která odpovídá tomuto archetypu, třída musí poskytovat následující funkce:

Metoda Popis
Initialize Volána k inicializaci pracovního objektu před předáním jakýchkoli požadavků ke spuštění.
Execute Volá se ke zpracování pracovní položky.
Terminate Volána k zrušení inicializace pracovního objektu po předání všech požadavků ke spuštění.
Typedef Popis
Requesttype Definice typu pracovní položky, kterou lze zpracovat třídou pracovního procesu.

Typická třída pracovního procesu vypadá takto:

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

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

   void Terminate(void* pvWorkerParam);
};

Existující implementace

Tyto třídy odpovídají tomuto archetypu:

Třída Popis
CNonStatelessWorker Přijímá požadavky z fondu vláken a předává je do pracovního objektu, který je vytvořen a zničen pro každý požadavek.

Použít

Tyto parametry šablony očekávají, že třída bude odpovídat tomuto archetypu:

Název parametru Používá
Pracovní podproces CThreadPool
Pracovní podproces CNonStatelessWorker

Požadavky

Hlavička: atlutil.h

WorkerArchetype::Execute

Volá se ke zpracování pracovní položky.

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

Parametry

Požadavek
Pracovní položka, kterou chcete zpracovat. Pracovní položka je stejného typu jako RequestType.

pvWorkerParam
Vlastní parametr rozumí třídě pracovního procesu. Také předán WorkerArchetype::Initialize do a Terminate.

pOverlapped
Ukazatel na překrývající se strukturu sloužící k vytvoření fronty, na které byly pracovní položky zařazeny do fronty.

WorkerArchetype::Initialize

Volána k inicializaci pracovního objektu před předáním jakýchkoli požadavků .WorkerArchetype::Execute

BOOL Initialize(void* pvParam) throw();

Parametry

pvParam
Vlastní parametr rozumí třídě pracovního procesu. Také předán WorkerArchetype::Terminate do a WorkerArchetype::Execute.

Vrácená hodnota

Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.

WorkerArchetype::RequestType

Definice typu pracovní položky, kterou lze zpracovat třídou pracovního procesu.

typedef MyRequestType RequestType;

Poznámky

Tento typ musí být použit jako první parametr WorkerArchetype::Execute a musí být schopný přetypovat do a z ULONG_PTR.

WorkerArchetype::Terminate

Volána k zrušení inicializace pracovního objektu po předání všech požadavků ).WorkerArchetype::Execute

void Terminate(void* pvParam) throw();

Parametry

pvParam
Vlastní parametr rozumí třídě pracovního procesu. Také předán WorkerArchetype::Initialize do a WorkerArchetype::Execute.

Viz také

Koncepty
Desktopové komponenty ATL objektů COM