Partager via


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

9tz6fz1e.collapse_all(fr-fr,VS.110).gifConstructeurs publics

Nom

Description

CThreadPool::CThreadPool

Le constructeur pour le pool de threads.

CThreadPool::~CThreadPool

Le destructeur du pool de threads.

9tz6fz1e.collapse_all(fr-fr,VS.110).gifMéthodes publiques

Nom

Description

CThreadPool::AddRef

Implémentation de IUnknown::AddRef.

CThreadPool::GetNumThreads

Appelez cette méthode pour obtenir le nombre de threads dans le pool.

CThreadPool::GetQueueHandle

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.

CThreadPool::GetSize

Appelez cette méthode pour obtenir le nombre de threads dans le pool.

CThreadPool::GetTimeout

Appelez cette méthode pour obtenir le temps maximum en millisecondes que le pool de threads attend un thread s'arrête.

CThreadPool::Initialize

Appelez cette méthode pour initialiser le pool de threads.

CThreadPool::QueryInterface

Implémentation d' IUnknown::QueryInterface.

CThreadPool::QueueRequest

Appelez cette méthode pour mettre en file d'attente un élément de travail à gérer par un thread du pool.

CThreadPool::Release

Implémentation de IUnknown::Release.

CThreadPool::SetSize

Appelez cette méthode pour définir le nombre de threads dans le pool.

CThreadPool::SetTimeout

Appelez cette méthode pour définir le temps maximum en millisecondes que le pool de threads attend un thread s'arrête.

CThreadPool::Shutdown

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

IThreadPoolConfig

CThreadPool

Configuration requise

Header: atlutil.h

Voir aussi

Référence

Interface d'IThreadPoolConfig

DefaultThreadTraits

Autres ressources

Classes ATL