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