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::Execute
obiektu .
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::Execute
obiektu ).
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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla