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 主机

另请参阅

XTaskQueue 成员
异步编程模型
异步任务队列设计