CThreadPool de classe
Cette classe fournit un pool de threads de travail qui traitent une file d'attente des éléments de travail.
template <
class Worker,
class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
public IThreadPoolConfig
Paramètres
ouvrier
La classe conformes à archétype de travail fournissant le code celle utilisée à des éléments de travail par processus mis en file d'attente sur le pool de threads.ThreadTraits
La classe fournissant la fonction utilisée pour créer des threads dans le pool.
Membres
Constructeurs publics
Nom |
Description |
---|---|
Le constructeur pour le pool de threads. |
|
Le destructeur du pool de threads. |
Méthodes publiques
Nom |
Description |
---|---|
Implémentation de IUnknown::AddRef. |
|
Appelez cette méthode pour obtenir le nombre de threads dans le pool. |
|
Appelez cette méthode pour obtenir le handle du port de terminaison d'E/S utilisé aux éléments de travail de file d'attente. |
|
Appelez cette méthode pour obtenir le nombre de threads dans le pool. |
|
Appelez cette méthode pour obtenir le temps maximum en millisecondes que le pool de threads attend un thread s'arrête. |
|
Appelez cette méthode pour initialiser le pool de threads. |
|
Implémentation d' IUnknown::QueryInterface. |
|
Appelez cette méthode pour mettre en file d'attente un élément de travail à gérer par un thread du pool. |
|
Implémentation de IUnknown::Release. |
|
Appelez cette méthode pour définir le nombre de threads dans le pool. |
|
Appelez cette méthode pour définir le temps maximum en millisecondes que le pool de threads attend un thread s'arrête. |
|
Appelez cette méthode pour arrêter le pool de threads. |
Notes
Les threads du pool sont créés et détruits lorsque le pool est initialisé, redimensionné, ou désactivé.Une instance d'ouvrier de classe est créée sur la pile de chaque thread de travail dans le pool.Chaque instance vivra pour la durée de vie du thread.
Immédiatement après la création d'un thread, Worker::Initialize sera invité à l'objet associé à ce thread.Juste avant la destruction d'un thread, Worker::Terminate est appelé.Les deux méthodes doivent accepter un argument de void* .La valeur de cet argument est passé au pool de threads via le paramètre d' pvWorkerParam de CThreadPool::Initialize.
Lorsqu'il existe des éléments de travail dans la file d'attente et les threads de travail disponibles pour le travail, un thread de travail supprime un élément la file d'attente et appelle la méthode de Exécuterd'objet de travail de ce thread.Trois éléments sont alors passés à la méthode : l'élément de la file d'attente, de même pvWorkerParam passé à Worker::Initialize et à Worker::Terminate, et d'un pointeur vers la structure d' OVERLAPPED utilisée pour la file d'attente de ports de terminaison d'E/S.
La classe de travail déclare le type des éléments qui seront mises en file d'attente sur le pool de threads en fournissant un typedef, Worker::RequestType.Ce type doit être capable de le cast vers et à partir de ULONG_PTR.
Un exemple d'une classe de travail est Classe de CNonStatelessWorker.
Hiérarchie d'héritage
IUnknown
CThreadPool
Configuration requise
Header: atlutil.h