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 |
---|---|
O construtor para o pool de segmentos. |
|
O destrutor para o pool de segmentos. |
Métodos públicos
Nome |
Descrição |
---|---|
Implementação de IUnknown::AddRef. |
|
Chamar esse método para obter o número de segmentos no pool. |
|
Chamar esse método para obter o identificador de porta de conclusão de E/S usada para colocar itens de trabalho. |
|
Chamar esse método para obter o número de segmentos no pool. |
|
Chamar esse método para obter o tempo máximo em milissegundos que o pool de segmentos esperará um segmento para fechar. |
|
Chamar esse método para inicializar o pool de segmentos. |
|
Implementação de IUnknown::QueryInterface. |
|
Chamar esse método para colocar um item de trabalho a ser manipulado por um thread pool. |
|
Implementação de IUnknown::Release. |
|
Chamar esse método para definir o número de segmentos no pool. |
|
Chamar esse método para definir a hora máximo em milissegundos que o pool de segmentos esperará um segmento para fechar. |
|
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
CThreadPool
Requisitos
Cabeçalho: atlutil.h
Consulte também
Referência
Interface de IThreadPoolConfig