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

Conceitos
Componentes de área de trabalho COM da ATL