다음을 통해 공유


Worker 원형

작업자 아키타입을 준수하는 클래스는 스레드 풀에 대기 중인 작업 항목을 처리하는 코드를 제공합니다.

구현

이 아키타입을 준수하는 클래스를 구현하려면 클래스에서 다음 기능을 제공해야 합니다.

메서드 설명
초기화 요청이 Execute에 전달되기 전에 작업자 개체를 초기화하기 위해 호출됩니다.
Execute 작업 항목을 처리하기 위해 호출됩니다.
Terminate 모든 요청이 Execute에 전달된 후 작업자 개체의 초기화를 해제하기 위해 호출됩니다.
Typedef 설명
RequestType 작업자 클래스에서 처리할 수 있는 작업 항목의 형식에 대한 typedef입니다.

일반적인 작업자 클래스는 다음과 같습니다.

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

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

   void Terminate(void* pvWorkerParam);
};

기존 구현

이러한 클래스는 다음 아키타입을 준수합니다.

클래스 설명
CNonStatelessWorker 스레드 풀에서 요청을 수신하고 각 요청에 대해 만들어지고 제거되는 작업자 개체에 전달합니다.

사용

이러한 템플릿 매개 변수는 클래스가 다음 아키타입을 준수해야 합니다.

매개 변수 이름 사용 대상
작업자 CThreadPool
작업자 CNonStatelessWorker

요구 사항

헤더: atlutil.h

WorkerArchetype::Execute

작업 항목을 처리하기 위해 호출됩니다.

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

매개 변수

request
처리할 작업 항목입니다. 작업 항목의 형식이 같습니다 RequestType.

pvWorkerParam
작업자 클래스에서 이해하는 사용자 지정 매개 변수입니다. 또한 전달 및 .WorkerArchetype::InitializeTerminate

pOverlapped
작업 항목이 큐에 대기된 큐를 만드는 데 사용되는 OVERLAPPED 구조체에 대한 포인터입니다.

WorkerArchetype::Initialize

요청이 전달되기 전에 작업자 개체를 초기화하기 위해 WorkerArchetype::Execute호출됩니다.

BOOL Initialize(void* pvParam) throw();

매개 변수

pvParam
작업자 클래스에서 이해하는 사용자 지정 매개 변수입니다. 또한 전달 및 .WorkerArchetype::TerminateWorkerArchetype::Execute

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

WorkerArchetype::RequestType

작업자 클래스에서 처리할 수 있는 작업 항목의 형식에 대한 typedef입니다.

typedef MyRequestType RequestType;

설명

이 형식은 첫 번째 매개 변수 WorkerArchetype::Execute 로 사용되어야 하며 ULONG_PTR 캐스팅할 수 있어야 합니다.

WorkerArchetype::Terminate

모든 요청이 전달된 후 작업자 개체의 초기화를 해제하기 위해 WorkerArchetype::Execute호출됩니다.

void Terminate(void* pvParam) throw();

매개 변수

pvParam
작업자 클래스에서 이해하는 사용자 지정 매개 변수입니다. 또한 전달 및 .WorkerArchetype::InitializeWorkerArchetype::Execute

참고 항목

개념
ATL COM 데스크톱 구성 요소