RtwqAllocateSerialWorkQueue 函数 (rtworkq.h)
在保证序列化工作项的另一个工作队列之上创建虚拟工作队列。 串行工作队列包装现有的多线程工作队列。 串行工作队列强制执行先入先出 (FIFO) 执行顺序。
语法
HRESULT RtwqAllocateSerialWorkQueue(
[in] DWORD workQueueIdIn,
[out] DWORD *workQueueIdOut
);
参数
[in] workQueueIdIn
现有工作队列的标识符。 这必须是多线程队列或其他串行工作队列。 可以使用以下任一项:
- 默认工作队列 (RTWQ_STANDARD_WORKQUEUE) 。 请参阅 RTWQ_WORKQUEUE_TYPE。
- 平台多线程队列 (RTWQ_MULTITHREADED_WORKQUEUE) 。 请参阅 RTWQ_WORKQUEUE_TYPE。
- RtwqLockSharedWorkQueue 函数返回的多线程队列。
- 由 RtwqAllocateSerialWorkQueue 函数创建的串行队列。
[out] workQueueIdOut
接收新串行工作队列的标识符。 在排队工作项时使用此标识符。
返回值
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
函数成功。 |
|
应用程序超出了工作队列的最大数目。 |
|
应用程序未调用 RtwqStartup,或者应用程序已调用 RtwqShutdown。 |
注解
使用完工作队列后,请调用 RtwqUnlockWorkQueue。
多线程队列使用线程池,这可以减少管道中的线程总数。 但是,它们不会序列化工作项。 串行工作队列使应用程序能够获取线程池的优势,而无需对其自己的工作项执行手动序列化。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8.1 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | rtworkq.h |
Library | Rtworkq.lib |
DLL | RTWorkQ.dll |