Partager via


Archétype de travail

Les classes qui sont conformes au archétype worker fournissent le code pour traiter les éléments de travail mis en file d’attente sur un pool de threads.

Implémentation

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

Méthode Description
Initialize Appelé pour initialiser l’objet worker avant que toutes les requêtes ne soient passées à Execute.
Execute Appelé pour traiter un élément de travail.
Terminer. Appelé pour annuler l’initialisation de l’objet worker après que toutes les requêtes ont été passées à Execute.
Typedef Description
RequestType Typedef pour le type d’élément de travail qui peut être traité par la classe Worker.

Une classe de travail classique 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 à cet archétype :

Classe Description
CNonStatelessWorker Reçoit les demandes du pool de threads et les transmet à un objet worker créé et détruit pour chaque requête.

Utiliser

Ces paramètres de modèle s’attendent à ce que la classe soit conforme à cet archétype :

Nom du paramètre Utilisée par
Collaborateur CThreadPool
Collaborateur CNonStatelessWorker

Spécifications

En-tête : atlutil.h

WorkerArchetype ::Execute

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

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

Paramètres

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

pvWorkerParam
Paramètre personnalisé compris par la classe worker. Également passé à WorkerArchetype::Initialize et Terminate.

pOverlapped
Pointeur vers la structure SE CHEVAUCHER utilisée pour créer la file d’attente sur laquelle les éléments de travail ont été mis en file d’attente.

WorkerArchetype ::Initialize

Appelé pour initialiser l’objet worker avant que toutes les requêtes ne soient passées à WorkerArchetype::Execute.

BOOL Initialize(void* pvParam) throw();

Paramètres

pvParam
Paramètre personnalisé compris par la classe worker. Également passé à WorkerArchetype::Terminate et WorkerArchetype::Execute.

Valeur de retour

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

WorkerArchetype ::RequestType

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

typedef MyRequestType RequestType;

Notes

Ce type doit être utilisé comme premier paramètre et WorkerArchetype::Execute doit être capable d’être casté vers et à partir d’un ULONG_PTR.

WorkerArchetype ::Terminate

Appelé pour annuler l’initialisation de l’objet worker après que toutes les demandes ont été passées à WorkerArchetype::Execute).

void Terminate(void* pvParam) throw();

Paramètres

pvParam
Paramètre personnalisé compris par la classe worker. Également passé à WorkerArchetype::Initialize et WorkerArchetype::Execute.

Voir aussi

Concepts
Composants de bureau COM ATL