Partilhar via


Classe de CThreadPool

Essa classe fornece um pool de segmentos de trabalho que processam uma fila de itens de trabalho.

template < 
   class Worker, 
   class ThreadTraits = DefaultThreadTraits 
> 
class CThreadPool : 
   public IThreadPoolConfig

Parâmetros

  • trabalhador
    A classe de acordo com a arquétipo de trabalho que fornece o código usado para itens de trabalho de processo enfileirou-se no pool de segmentos.

  • ThreadTraits
    A classe que fornece a função usada para criar os segmentos no pool.

Membros

Construtores public

Nome

Descrição

CThreadPool::CThreadPool

O construtor para o pool de segmentos.

CThreadPool::~CThreadPool

O destrutor para o pool de segmentos.

Métodos públicos

Nome

Descrição

CThreadPool::AddRef

Implementação de IUnknown::AddRef.

CThreadPool::GetNumThreads

Chamar esse método para obter o número de segmentos no pool.

CThreadPool::GetQueueHandle

Chamar esse método para obter o identificador de porta de conclusão de E/S usada para colocar itens de trabalho.

CThreadPool::GetSize

Chamar esse método para obter o número de segmentos no pool.

CThreadPool::GetTimeout

Chamar esse método para obter o tempo máximo em milissegundos que o pool de segmentos esperará um segmento para fechar.

CThreadPool::Initialize

Chamar esse método para inicializar o pool de segmentos.

CThreadPool::QueryInterface

Implementação de IUnknown::QueryInterface.

CThreadPool::QueueRequest

Chamar esse método para colocar um item de trabalho a ser manipulado por um thread pool.

CThreadPool::Release

Implementação de IUnknown::Release.

CThreadPool::SetSize

Chamar esse método para definir o número de segmentos no pool.

CThreadPool::SetTimeout

Chamar esse método para definir a hora máximo em milissegundos que o pool de segmentos esperará um segmento para fechar.

CThreadPool::Shutdown

Chamar esse método para fechar o pool de segmentos.

Comentários

Os segmentos no pool são criados e destruídos quando é inicializado, o pool, redimensionado ou fechada. Uma instância de trabalhador da classe será criada na pilha de cada thread de trabalho no pool. Cada instância viverá no tempo de vida do segmento.

Logo após a criação de um segmento, Worker::Initialize será chamado do objeto associado com o segmento. Imediatamente antes da destruição de um segmento, Worker::Terminate será chamado. Ambos os métodos devem aceitar um argumento de void* . O valor de esse argumento é passado para o pool de segmentos com o parâmetro de pvWorkerParam de CThreadPool::Initialize.

Quando houver itens de trabalho na fila e os segmentos de trabalho disponíveis para o trabalho, um segmento de trabalho retirará um item a fila e chamar o método de Executar do objeto de trabalho para aquele segmento. Três itens são passados para o método: o item da fila, do mesmo pvWorkerParam passado para Worker::Initialize e Worker::Terminate, e um ponteiro para a estrutura de SOBREPOSTO usada para a fila de porta de conclusão de E/S.

A classe de trabalho declarar o tipo de itens que serão enfileirados no pool de segmentos fornecendo um typedef, Worker::RequestType. Este tipo deve ser capaz da ser convertido e de ULONG_PTR.

Um exemplo de uma classe de trabalho é Classe de CNonStatelessWorker.

Hierarquia de herança

IUnknown

IThreadPoolConfig

CThreadPool

Requisitos

Cabeçalho: atlutil.h

Consulte também

Referência

Interface de IThreadPoolConfig

DefaultThreadTraits

Outros recursos

Classes de ATL