Worker Archetype
符合辅助角色原型的类提供用于处理线程池上排队的工作项的代码。
实现
若要实现符合此原型的类,该类必须提供以下功能:
方法 | 说明 |
---|---|
初始化 | 调用以在将任何请求传递到 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
指向重叠结构的指针,该结构用于创建工作项排队的队列。
WorkerArchetype::Initialize
调用以在将任何请求传递到 WorkerArchetype::Execute
之前初始化辅助角色对象。
BOOL Initialize(void* pvParam) throw();
参数
pvParam
辅助角色类理解的自定义参数。 也传递给 WorkerArchetype::Terminate
和 WorkerArchetype::Execute
。
返回值
如果成功,则返回 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 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈