辅助角色原型
符合辅助角色原型的类提供用于处理线程池上排队的工作项的代码。
实现
若要实现符合此原型的类,该类必须提供以下功能:
方法 | 说明 |
---|---|
初始化 | 调用以在将任何请求传递到 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);
参数
请求
要处理的工作项。 工作项的类型与 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
。