Condividi tramite


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

9tz6fz1e.collapse_all(it-it,VS.110).gifCostruttori pubblici

Nome

Descrizione

CThreadPool::CThreadPool

Il costruttore per il pool di thread.

CThreadPool::~CThreadPool

Il distruttore per il pool di thread.

9tz6fz1e.collapse_all(it-it,VS.110).gifMetodi pubblici

Nome

Descrizione

CThreadPool::AddRef

Implementazione di IUnknown::AddRef.

CThreadPool::GetNumThreads

Chiamare questo metodo per ottenere il numero di thread nel pool.

CThreadPool::GetQueueHandle

Chiamare questo metodo per ottenere un handle delle porte di completamento di I/O utilizzata agli elementi di lavoro della coda.

CThreadPool::GetSize

Chiamare questo metodo per ottenere il numero di thread nel pool.

CThreadPool::GetTimeout

Chiamare questo metodo per ottenere il tempo massimo in millisecondi che il pool di thread rimarrà un thread per interrompere.

CThreadPool::Initialize

Chiamare questo metodo per inizializzare il pool di thread.

CThreadPool::QueryInterface

Implementazione IUnknown::QueryInterface.

CThreadPool::QueueRequest

Chiamare questo metodo per accodare un elemento di lavoro da gestire da un thread del pool.

CThreadPool::Release

Implementazione di IUnknown::Release.

CThreadPool::SetSize

Chiamare questo metodo per impostare il numero di thread nel pool.

CThreadPool::SetTimeout

Chiamare questo metodo per impostare il tempo massimo in millisecondi che il pool di thread rimarrà un thread per interrompere.

CThreadPool::Shutdown

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

IThreadPoolConfig

CThreadPool

Requisiti

Header: atlutil.h

Vedere anche

Riferimenti

Interfaccia di IThreadPoolConfig

DefaultThreadTraits

Altre risorse

Classi ATL