Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
.