XTaskQueueSetCurrentProcessTaskQueue
将给定的任务队列设置为进程级任务队列。
语法
void XTaskQueueSetCurrentProcessTaskQueue(
XTaskQueueHandle queue
)
参数
queue _In_
类型:XTaskQueueHandle
要设置为进程的默认任务队列的队列。
返回值
类型:void
备注
注意
在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程。
队列可以设置为 nullptr,这种情况下 XTaskQueueGetCurrentProcessTaskQueue 也将返回 nullptr。 提供的队列将复制其句柄且任何现有进程任务队列将关闭其句柄。
以下示例替换默认进程任务队列。 此任务队列将线程池用于工作和完成调度。 采用任务队列参数的 Microsoft 游戏开发工具包(GDK)API 都接受 nullptr 并替代进程任务队列。 也可以将该进程任务队列设置为 nullptr,在这种情况下如果提供了 null,需要任务队列参数的 Microsoft 游戏开发工具包(GDK)API 将出错并返回 E_NO_TASK_QUEUE。 这允许 Microsoft 游戏开发工具包(GDK)API 以默认值运行,同时根据需要仍允许紧密控制任务队列句柄。
void UsingProcessTaskQueue()
{
XTaskQueueHandle queue = nullptr;
XTaskQueueGetCurrentProcessTaskQueue(&queue);
auto callback = [](void*, bool)
{
printf("Work callback invoked.\r\n");
};
HRESULT hr = XTaskQueueSubmitCallback(
queue, XTaskQueuePort::Work,
nullptr, callback);
if (FAILED(hr))
{
printf("Failed to submit callback: %x\r\n", hr);
return;
}
// You can replace the process task queue.
hr = XTaskQueueCreate(
XTaskQueueDispatchMode::Manual,
XTaskQueueDispatchMode::Manual,
&queue);
if (FAILED(hr))
{
printf("Failed to create new task queue: %x\r\n", hr);
return;
}
}
要求
头文件:XTaskQueue.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机