Рабочий архетип

Классы, соответствующие архетипу рабочей роли , предоставляют код для обработки рабочих элементов в очереди в пуле потоков.

Реализация

Чтобы реализовать класс, соответствующий этому архетипу, класс должен предоставить следующие функции:

Способ Описание
Initialize Вызывается для инициализации рабочего объекта перед передачей запросов в Execute.
Execute Вызывается для обработки рабочего элемента.
Завершение Вызывается для неинициализации рабочего объекта после того, как все запросы переданы в Execute.
Typedef Description
RequestType Типдиф для типа рабочего элемента, который может обрабатываться рабочим классом.

Типичный рабочий класс выглядит следующим образом:

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

   void Execute(MyRequestType request, void* pvWorkerParam, OVERLAPPED* pOverlapped);

   void Terminate(void* pvWorkerParam);
};

Существующие реализации

Эти классы соответствуют этому архетипу:

Класс Description
CNonStatelessWorker Получает запросы из пула потоков и передает их в рабочий объект, созданный и уничтоженный для каждого запроса.

Использование

Эти параметры шаблона ожидают, что класс соответствует этому архетипу:

Наименование параметра Где используется
Рабочий CThreadPool
Рабочий CNonStatelessWorker

Требования

Заголовок: atlutil.h

WorkerArchetype::Execute

Вызывается для обработки рабочего элемента.

void Execute(
    RequestType request,
    void* pvWorkerParam,
    OVERLAPPED* pOverlapped);

Параметры

request
Рабочий элемент, который необходимо обработать. Рабочий элемент имеет тот же тип, что RequestTypeи .

pvWorkerParam
Настраиваемый параметр, понятный рабочим классом. Также переданы WorkerArchetype::Initialize и Terminate.

pOverlapped
Указатель на структуру OVERLAPPED , используемую для создания очереди, в которой были помещены рабочие элементы.

WorkerArchetype::Initialize

Вызывается для инициализации рабочего объекта перед передачей WorkerArchetype::Executeзапросов.

BOOL Initialize(void* pvParam) throw();

Параметры

pvParam
Настраиваемый параметр, понятный рабочим классом. Также переданы WorkerArchetype::Terminate и WorkerArchetype::Execute.

Возвращаемое значение

Возвращает значение TRUE при успешном выполнении, false при сбое.

WorkerArchetype::RequestType

Типдиф для типа рабочего элемента, который может обрабатываться рабочим классом.

typedef MyRequestType RequestType;

Замечания

Этот тип должен использоваться в качестве первого параметра WorkerArchetype::Execute и должен иметь возможность приведения к ULONG_PTR и из него.

WorkerArchetype::Terminate

Вызывается для неинициализации рабочего объекта после того, как все запросы были переданы WorkerArchetype::Executeв ).

void Terminate(void* pvParam) throw();

Параметры

pvParam
Настраиваемый параметр, понятный рабочим классом. Также переданы WorkerArchetype::Initialize и WorkerArchetype::Execute.

См. также

Основные понятия
Компоненты ATL COM Desktop