Pracovní proces Archetype
Třídy, které odpovídají Archetype 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 Archetype, třída musí poskytovat následující funkce:
| Metoda | Popis |
|---|---|
| Inicializace | Volá se, aby se inicializoval objekt pracovního procesu před předáním všech požadavků, které se mají provést. |
| Spuštěním | Volá se, aby se zpracovala pracovní položka. |
| Ukončení | Volá se, aby se zrušila inicializace objektu pracovního procesu po předání všech požadavků, které se mají provést. |
| Definic | Popis |
|---|---|
| Třídy | Definice typu pracovní položky, která může být zpracována 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 archetype:
| Třída | Popis |
|---|---|
| CNonStatelessWorker | Přijímá žádosti z fondu vláken a předává je do objektu pracovního procesu, který je vytvořen a zničen pro každý požadavek. |
Použití
Tyto parametry šablony očekávají, že třída bude vyhovovat tomuto archetype:
| Název parametru | Využíval |
|---|---|
| Zaměstnanec | CThreadPool |
| Zaměstnanec | CNonStatelessWorker |
Požadavky
Záhlaví: atlutil. h
WorkerArchetype:: Execute
Volá se, aby se zpracovala pracovní položka.
void Execute(
RequestType request,
void* pvWorkerParam,
OVERLAPPED* pOverlapped);
Parametry
Request
Pracovní položka, která má být zpracována. Pracovní položka je stejného typu jako RequestType .
pvWorkerParam
Vlastní parametr, který rozumí třída pracovního procesu. Také předán WorkerArchetype::Initialize a Terminate .
pOverlapped
Ukazatel na PŘEkrývající se strukturu použitou k vytvoření fronty, na které byly pracovní položky zařazeny do fronty.
WorkerArchetype:: Initialize
Volá se, aby se inicializoval objekt pracovního procesu, aby se předaly všechny požadavky WorkerArchetype::Execute .
BOOL Initialize(void* pvParam) throw();
Parametry
pvParam
Vlastní parametr, který rozumí třída pracovního procesu. Také předán WorkerArchetype::Terminate a WorkerArchetype::Execute .
Návratová hodnota
Vrátí hodnotu TRUE při úspěchu, což je FALSE při selhání.
WorkerArchetype:: RequestType
Definice typu pracovní položky, která může být zpracována 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řetypování do a z ULONG_PTR.
WorkerArchetype:: terminate
Volá se, aby se zrušila inicializace objektu pracovního procesu po předání všech požadavků do WorkerArchetype::Execute ).
void Terminate(void* pvParam) throw();
Parametry
pvParam
Vlastní parametr, který rozumí třída pracovního procesu. Také předán WorkerArchetype::Initialize a WorkerArchetype::Execute .