Worker Archetype

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Les classes qui se conforment à la travail archétype fournissent le code pour traiter des éléments de travail en file d’attente sur un pool de threads.

Mise en œuvre

Pour implémenter une classe conforme à cette archétype, la classe doit fournir les fonctionnalités suivantes :

MéthodeDescription
InitialiserAppelée pour initialiser l’objet de travail avant que toutes les demandes sont transmises à Execute.
ExécuterAppelée pour traiter un élément de travail.
ArrêterAppelé pour annuler l’initialisation de l’objet de travail une fois que toutes les demandes qui ont été transmis au Execute.
TypeDefDescription
RequestTypeTypedef pour le type d’élément de travail qui peut être traité par la classe de travail.

Par défaut travail classe ressemble à ceci :

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

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

   void Terminate(void* pvWorkerParam);
};

Implémentations existantes

Ces classes sont conformes à cette archétype :

ClasseDescription
CNonStatelessWorkerReçoit les demandes du pool de threads et les transmet à un objet de travail qui est créé et détruit pour chaque demande.

Utilisation

Ces paramètres de modèle que la classe conforme à cette archétype :

Nom du paramètreUtilisé par
TravailCThreadPool
TravailCNonStatelessWorker

Spécifications

En-tête : atlutil.h

Appelée pour traiter un élément de travail.

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

Paramètres

request
L’élément de travail à traiter. L’élément de travail est du même type que RequestType.

pvWorkerParam
Un paramètre personnalisé compris par la classe de travail. Également transmis à WorkerArchetype::Initialize et Terminate.

pOverlapped
Un pointeur vers le OVERLAPPED structure utilisée pour créer la file d’attente à laquelle les éléments ont été en file d’attente.

Appelée pour initialiser l’objet de travail avant que toutes les demandes sont transmises à WorkerArchetype::Execute.

BOOL Initialize(void* pvParam) throw();

Paramètres

pvParam
Un paramètre personnalisé compris par la classe de travail. Également transmis à WorkerArchetype::Terminate et WorkerArchetype::Execute.

Valeur de retour

Retourner TRUE en cas de réussite, FALSE en cas d’échec.

Typedef pour le type d’élément de travail qui peut être traité par la classe de travail.

typedef   MyRequestType RequestType;    

Notes

Ce type doit être utilisé comme premier paramètre de WorkerArchetype::Execute et doit pouvoir être casté vers et depuis un ULONG_PTR entière.

Appelé pour annuler l’initialisation de l’objet de travail une fois que toutes les demandes qui ont été transmis au WorkerArchetype::Execute).

void Terminate(void* pvParam) throw();

Paramètres

pvParam
Un paramètre personnalisé compris par la classe de travail. Également transmis à WorkerArchetype::Initialize et WorkerArchetype::Execute.

Archétypes
Concepts
Composants COM bureau ATL

Afficher: