Classe di CThreadPool
Questa classe fornisce un pool di thread di lavoro che elaborano una coda di elementi di lavoro.
template <
class Worker,
class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
public IThreadPoolConfig
Parametri
Lavoro
La classe conformi a archetipo di lavoro fornito il codice utilizzato agli elementi dell'analisi di processo in coda nel pool di thread.ThreadTraits
La classe che fornisce la funzione utilizzata per creare i thread nel pool.
Membri
Costruttori pubblici
Nome |
Descrizione |
---|---|
Il costruttore per il pool di thread. |
|
Il distruttore per il pool di thread. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Implementazione di IUnknown::AddRef. |
|
Chiamare questo metodo per ottenere il numero di thread nel pool. |
|
Chiamare questo metodo per ottenere un handle delle porte di completamento di I/O utilizzata agli elementi di lavoro della coda. |
|
Chiamare questo metodo per ottenere il numero di thread nel pool. |
|
Chiamare questo metodo per ottenere il tempo massimo in millisecondi che il pool di thread rimarrà un thread per interrompere. |
|
Chiamare questo metodo per inizializzare il pool di thread. |
|
Implementazione IUnknown::QueryInterface. |
|
Chiamare questo metodo per accodare un elemento di lavoro da gestire da un thread del pool. |
|
Implementazione di IUnknown::Release. |
|
Chiamare questo metodo per impostare il numero di thread nel pool. |
|
Chiamare questo metodo per impostare il tempo massimo in millisecondi che il pool di thread rimarrà un thread per interrompere. |
|
Chiamare questo metodo per interrompere il pool di thread. |
Note
I thread del pool vengono creati e vengono eliminati al pool inizializzato, ridimensionato o, viene arrestato.Un'istanza di lavoro della classe viene creata nello stack di ogni thread di lavoro nel pool.Ogni istanza vivrà per la durata del thread.
Immediatamente dopo la creazione di un thread, Worker::Initialize verrà chiamato sull'oggetto associato a tale thread.Immediatamente prima della distruzione di un thread, Worker::Terminate verrà chiamato.Entrambi i metodi devono accettare un argomento void*.Il valore di questo argomento passato al pool di thread con il parametro pvWorkerParamCThreadPool::Initialize.
Quando sono presenti elementi di lavoro nella coda e i thread di lavoro disponibili per il lavoro, un thread di lavoro eseguirà il raggiungimento di un elemento dalla coda e chiamerà il metodo Execute dell'oggetto del lavoro per tale thread.Tre elementi vengono quindi passati al metodo: l'elemento dalla coda, da stesso pvWorkerParam passato a Worker::Initialize e a Worker::Terminatee un puntatore a una struttura SOVRAPPOSTO utilizzata per la coda delle porte di completamento di I/O.
La classe di lavoro dichiara il tipo di elementi che verranno ordinati in coda nel pool di thread immettendo un typedef, Worker::RequestType.Questo tipo deve essere in grado di eseguire il cast da e verso ULONG_PTR.
Un esempio di una classe di lavoro è Classe di CNonStatelessWorker.
Gerarchia di ereditarietà
IUnknown
CThreadPool
Requisiti
Header: atlutil.h
Vedere anche
Riferimenti
Interfaccia di IThreadPoolConfig