Compartilhar 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

9tz6fz1e.collapse_all(pt-br,VS.110).gifConstrutores public

Nome

Descrição

CThreadPool::CThreadPool

O construtor para o pool de segmentos.

CThreadPool::~CThreadPool

O destrutor para o pool de segmentos.

9tz6fz1e.collapse_all(pt-br,VS.110).gifMé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