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::Initialize
Terminate
pOverlapped
작업 항목이 큐에 대기된 큐를 만드는 데 사용되는 OVERLAPPED 구조체에 대한 포인터입니다.
WorkerArchetype::Initialize
요청이 전달되기 전에 작업자 개체를 초기화하기 위해 WorkerArchetype::Execute
호출됩니다.
BOOL Initialize(void* pvParam) throw();
매개 변수
pvParam
작업자 클래스에서 이해하는 사용자 지정 매개 변수입니다. 또한 전달 및 .WorkerArchetype::Terminate
WorkerArchetype::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::Initialize
WorkerArchetype::Execute
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기