RtwqAllocateSerialWorkQueue 函数 (rtworkq.h)

在保证序列化工作项的另一个工作队列之上创建虚拟工作队列。 串行工作队列包装现有的多线程工作队列。 串行工作队列强制执行先入先出 (FIFO) 执行顺序。

语法

HRESULT RtwqAllocateSerialWorkQueue(
  [in]  DWORD workQueueIdIn,
  [out] DWORD *workQueueIdOut
);

参数

[in] workQueueIdIn

现有工作队列的标识符。 这必须是多线程队列或其他串行工作队列。 可以使用以下任一项:

[out] workQueueIdOut

接收新串行工作队列的标识符。 在排队工作项时使用此标识符。

返回值

此函数可以返回其中一个值。

返回代码 说明
S_OK
函数成功。
E_FAIL
应用程序超出了工作队列的最大数目。
RTWQ_E_SHUTDOWN
应用程序未调用 RtwqStartup,或者应用程序已调用 RtwqShutdown

注解

使用完工作队列后,请调用 RtwqUnlockWorkQueue

多线程队列使用线程池,这可以减少管道中的线程总数。 但是,它们不会序列化工作项。 串行工作队列使应用程序能够获取线程池的优势,而无需对其自己的工作项执行手动序列化。

要求

要求
最低受支持的客户端 Windows 8.1 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 R2 [仅限桌面应用]
目标平台 Windows
标头 rtworkq.h
Library Rtworkq.lib
DLL RTWorkQ.dll

另请参阅

RTWQ_WORKQUEUE_TYPE