次の方法で共有


XTaskQueueSetCurrentProcessTaskQueue

特定のタスク キューをプロセス全体のタスク キューとして設定します。

構文

void XTaskQueueSetCurrentProcessTaskQueue(  
         XTaskQueueHandle queue  
)  

パラメーター

queue _In_
型: XTaskQueueHandle

プロセスの既定タスク キューとして設定されるキュー。

戻り値

型: void

解説

注意

この関数は、時間依存のスレッドで呼び出すのに安全ではありません。 詳細については、「時間依存のスレッド」を参照してください。

キューを nullptr に設定できます。その場合、XTaskQueueGetCurrentProcessTaskQueue も nullptr を返します。 提供されたキューのハンドルが複製され、既存のすべてのプロセス タスク キューのハンドルが閉じられます。

次の例では、既定のプロセス タスク キューが置き換えられます。 このタスク キューは、処理と完了両方のディスパッチでスレッド プールを使用します。 タスク キューのパラメーターを受け取る Microsoft Game Development Kit (GDK) API のすべては、nullptr を受け入れ、プロセス タスク キューの代用になります。 プロセス タスク キューを nullptr に設定することもできます。その場合、タスク キュー パラメーターを必要とする Microsoft Game Development Kit (GDK) の API では、null 値が指定された場合は E_NO_TASK_QUEUE のエラーが生成されます。 これによって Microsoft Game Development Kit (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 のメンバー
非同期プログラミング モデル
非同期タスク キューの設計