XTaskQueueGetPort
返回给定端口的任务队列端口句柄。
语法
HRESULT XTaskQueueGetPort(
XTaskQueueHandle queue,
XTaskQueuePort port,
XTaskQueuePortHandle* portHandle
)
参数
queue _In_
类型:XTaskQueueHandle
要从中获取端口的任务队列。
port _In_
类型:XTaskQueuePort
要获取的端口。
portHandle _Out_
类型:XTaskQueuePortHandle*
给定端口的任务队列端口句柄。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
备注
注意
在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程。
任务队列端口句柄由任务队列拥有,无需关闭。 创建复合任务队列时使用它们。
以下示例创建一个复合队列,其工作端口和完成端口都使用原始队列的工作端口。 复合任务队列是由其他队列中的部分构成的一种任务队列。 当一个异步任务需要调用另一个异步任务,并且该任务的完成是不应浪费该完成线程上的周期的中间步骤时,复合任务队列将很有用。
注意
SubmitCallback 是在 XTaskQueueSubmitCallback 函数的代码示例中定义的帮助程序函数。
void CreatingCompositeQueue()
{
XTaskQueueHandle queue;
HRESULT hr = XTaskQueueCreate(
XTaskQueueDispatchMode::ThreadPool,
XTaskQueueDispatchMode::Manual,
&queue);
if (FAILED(hr))
{
printf("failed to create task queue: 0x%x\r\n", hr);
return;
}
XTaskQueuePortHandle workPort;
// Create a composite queue that uses the work port from
// another queue for both work and completion ports.
hr = XTaskQueueGetPort(queue, XTaskQueuePort::Work, &workPort);
if (FAILED(hr))
{
printf("failed to get work port 0x%x\r\n", hr);
XTaskQueueCloseHandle(queue);
return;
}
XTaskQueueHandle compositeQueue;
hr = XTaskQueueCreateComposite(workPort, workPort, &compositeQueue);
if (FAILED(hr))
{
printf("failed to create composiute queue 0x%x\r\n", hr);
XTaskQueueCloseHandle(queue);
return;
}
// Use the queue as needed
SubmitCallbacks(compositeQueue);
// Wait a while for the callbacks to run
Sleep(1000);
XTaskQueueCloseHandle(compositeQueue);
XTaskQueueCloseHandle(queue);
}
要求
头文件:XTaskQueue.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机