Рабочий архетип
Классы, соответствующие архетипу рабочей роли , предоставляют код для обработки рабочих элементов в очереди в пуле потоков.
Реализация
Чтобы реализовать класс, соответствующий этому архетипу, класс должен предоставить следующие функции:
Способ | Описание |
---|---|
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
.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по