Arquétipo de trabalho
Classes que estão em conformidade com o arquétipo de trabalho fornecem o código para processar itens de trabalho enfileirados em um pool de threads.
Implementação
Para implementar uma classe em conformidade com esse arquétipo, a classe deve fornecer os seguintes recursos:
Método | Descrição |
---|---|
Initialize | Chamado para inicializar o objeto de trabalho antes que qualquer solicitação seja passada para Execute. |
Executar | Chamado para processar um item de trabalho. |
Encerrar | Chamado para cancelar a inicialização do objeto de trabalho depois que todas as solicitações tiverem sido passadas para Execute. |
Typedef | Descrição |
---|---|
Tipo de solicitação | Um typedef para o tipo do item de trabalho que pode ser processado pela classe de trabalho. |
Uma classe de trabalho típica tem esta aparência:
class CMyWorker
{
public:
typedef MyRequestType RequestType;
BOOL Initialize(void* pvWorkerParam);
void Execute(MyRequestType request, void* pvWorkerParam, OVERLAPPED* pOverlapped);
void Terminate(void* pvWorkerParam);
};
Implementações existentes
Essas classes estão em conformidade com esse arquétipo:
Classe | Descrição |
---|---|
CNonStatelessWorker | Recebe solicitações do pool de threads e as passa para um objeto de trabalho que é criado e destruído em cada solicitação. |
Usar
Esses parâmetros de modelo esperam que a classe esteja em conformidade com esse arquétipo:
Nome do parâmetro | Usado por |
---|---|
Trabalhador | CThreadPool |
Trabalhador | CNonStatelessWorker |
Requisitos
Cabeçalho: atlutil.h
WorkerArchetype::Execute
Chamado para processar um item de trabalho.
void Execute(
RequestType request,
void* pvWorkerParam,
OVERLAPPED* pOverlapped);
Parâmetros
solicitação
O item de trabalho a ser processado. O item de trabalho é do mesmo tipo que RequestType
.
pvWorkerParam
Um parâmetro personalizado compreendido pela classe de trabalho. Também passado para WorkerArchetype::Initialize
e Terminate
.
pOverlapped
Um ponteiro para a estrutura OVERLAPPED usada para criar a fila na qual os itens de trabalho foram enfileirados.
WorkerArchetype::Initialize
Chamado para inicializar o objeto de trabalho antes que qualquer solicitação seja passada para WorkerArchetype::Execute
.
BOOL Initialize(void* pvParam) throw();
Parâmetros
pvParam
Um parâmetro personalizado compreendido pela classe de trabalho. Também passado para WorkerArchetype::Terminate
e WorkerArchetype::Execute
.
Valor de Devolução
Retorna TRUE em caso de êxito e FALSE em caso de falha.
WorkerArchetype::RequestType
Um typedef para o tipo do item de trabalho que pode ser processado pela classe de trabalho.
typedef MyRequestType RequestType;
Comentários
Esse tipo deve ser usado como o primeiro parâmetro de WorkerArchetype::Execute
e deve ser capaz de ser convertido de e para um ULONG_PTR.
WorkerArchetype::Terminate
Chamado para cancelar a inicialização do objeto de trabalho depois que todas as solicitações tiverem sido passadas para WorkerArchetype::Execute
.
void Terminate(void* pvParam) throw();
Parâmetros
pvParam
Um parâmetro personalizado compreendido pela classe de trabalho. Também passado para WorkerArchetype::Initialize
e WorkerArchetype::Execute
.
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de