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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für