Worker Archetype

Klassen, die dem Worker-Archetyp entsprechen, stellen den Code zum Verarbeiten von Arbeitsaufgaben bereit, die in einem Threadpool in die Warteschlange gestellt werden.

Implementierung

Um eine Klasse zu implementieren, die diesem Archetyp entspricht, muss die Klasse die folgenden Features bereitstellen:

Methode Beschreibung
Initialize Wird aufgerufen, um das Workerobjekt zu initialisieren, bevor anforderungen an Execute übergeben werden.
Ausführen Wird aufgerufen, um eine Arbeitsaufgabe zu verarbeiten.
Terminate Wird aufgerufen, um das Workerobjekt zu entinitialisieren, nachdem alle Anforderungen an Execute übergeben wurden.
TypeDef Beschreibung
Requesttype Eine Typedef für den Typ der Arbeitsaufgabe, die von der Arbeitsklasse verarbeitet werden kann.

Eine typische Arbeiterklasse sieht wie folgt aus:

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

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

   void Terminate(void* pvWorkerParam);
};

Vorhandene Implementierungen

Diese Klassen entsprechen diesem Archetyp:

Klasse Beschreibung
CNonStatelessWorker Empfängt Anforderungen vom Threadpool und übergibt sie an ein Workerobjekt, das für jede Anforderung erstellt und zerstört wird.

Verwendung

Diese Vorlagenparameter erwarten, dass die Klasse diesem Archetyp entspricht:

Parametername Verwendet von
Arbeitskraft CThreadPool
Arbeitskraft CNonStatelessWorker

Anforderungen

Header: atlutil.h

WorkerArchetype::Execute

Wird aufgerufen, um eine Arbeitsaufgabe zu verarbeiten.

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

Parameter

request
Die zu verarbeitende Arbeitsaufgabe. Die Arbeitsaufgabe hat denselben Typ wie RequestType.

pvWorkerParam
Ein benutzerdefinierter Parameter, der von der Workerklasse verstanden wird. Auch übergeben an WorkerArchetype::Initialize und Terminate.

POverlapped
Ein Zeiger auf die ÜBERLAPPENDE Struktur, mit der die Warteschlange erstellt wurde, in der Arbeitsaufgaben in die Warteschlange gestellt wurden.

WorkerArchetype::Initialize

Wird aufgerufen, um das Workerobjekt zu initialisieren, bevor anforderungen an WorkerArchetype::Execute.

BOOL Initialize(void* pvParam) throw();

Parameter

pvParam
Ein benutzerdefinierter Parameter, der von der Workerklasse verstanden wird. Auch übergeben an WorkerArchetype::Terminate und WorkerArchetype::Execute.

Rückgabewert

Gibt WAHR bei Erfolg, FALSE bei Fehler zurück.

WorkerArchetype::RequestType

Eine Typedef für den Typ der Arbeitsaufgabe, die von der Arbeitsklasse verarbeitet werden kann.

typedef MyRequestType RequestType;

Hinweise

Dieser Typ muss als erster Parameter WorkerArchetype::Execute verwendet werden und muss in eine ULONG_PTR umwandeln können.

WorkerArchetype::Terminate

Wird aufgerufen, um das Workerobjekt zu entinitialisieren, nachdem alle Anforderungen an WorkerArchetype::Execute).

void Terminate(void* pvParam) throw();

Parameter

pvParam
Ein benutzerdefinierter Parameter, der von der Workerklasse verstanden wird. Auch übergeben an WorkerArchetype::Initialize und WorkerArchetype::Execute.

Siehe auch

Konzepte
ATL-COM-Desktop-Komponenten