方法: プロセス タスク キューの使用

既定のプロセス タスク キューは、処理と完了両方のディスパッチでスレッド プールを使用します。 タスク キューのパラメーターを受け取る Microsoft Game Development Kit (GDK) API のすべては、nullptr を受け入れ、プロセス タスク キューの代用になります。 置き換えることができます。 プロセス タスク キューは nullptr に設定することもできます。 この場合、タスク キュー パラメータを必要とする Microsoft Game Development Kit (GDK) API は、E_NO_TASK_QUEUE でエラーになります。 これによって Microsoft Game Development Kit (GDK) API は既定値で機能しますが、必要に応じて、タスク キュー ハンドルを厳しく管理できます。

次の例は、プロセス タスク キューの使用方法を示しています。

void UsingProcessTaskQueue()  
{  
    XTaskQueueHandle queue = GetCurrentProcessTaskQueue();  
  
    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;  
    }  
  
    XTaskQueueSetCurrentProcessTaskQueue(queue);  
  
    XTaskQueueHandle processQueue;  
    XTaskQueueGetCurrentProcessTaskQueue(&processQueue);  
    printf("Process task queue: %p. Our queue: %p\r\n",  
        processQueue, queue);  
    XTaskQueueCloseHandle(processQueue);  
  
    // You can set the process queue to nullptr to force everyone to pass a queue  
    // as a parameter.  
    XTaskQueueSetCurrentProcessTaskQueue(nullptr);  
    XTaskQueueGetCurrentProcessTaskQueue(&processQueue);  
    printf("Process task queue: %p.\r\n",  
        processQueue);  
}  

関連項目

タスク キューの設計