次の方法で共有


XTaskQueueDispatchMode

タスク キューのコールバックの処理方法が記述されています。

構文

typedef enum class XTaskQueueDispatchMode  : uint32_t  
{  
    Manual,  
    ThreadPool,  
    SerializedThreadPool,  
    Immediate  
} XTaskQueueDispatchMode  

定数

定数 説明
Manual コールバックが自動的にはディスパッチされません。 このディスパッチ モードを使用してポートに送信されたコールバックはキューに登録されますが、XTaskQueueDispatch によって手動でディスパッチする必要があります。
注意: Windows メッセージをポンプするスレッドがある場合:
  • 処理ポートのコールバックをディスパッチしないでください
  • 完了ポートのコールバックをディスパッチする場合は、引き続きスレッドに対して Windows メッセージをポンプする必要があります

詳細については、「手動タスク キューを作成する」を参照してください。
ThreadPool このディスパッチ モードを使用してポートに送信されたコールバックはキューに登録され、システム スレッド キューに自動的にディスパッチされます。 タスク キューは、スレッド プールのスレッドが利用可能になると、実行する呼び出しをタスク キューから順番に受け取り、複数の呼び出しを並行で実行します。
スレッド プール タスク キューの作成の詳細については、「スレッド プール タスク キューを作成する」を参照してください。
SerializedThreadPool このディスパッチ モードを使用してポートに送信されたコールバックはキューに登録され、システム スレッド キューに自動的にディスパッチされます。 ThreadPool とは異なり、タスク キューは、スレッド プールで 1 つずつ呼び出しを実行します。
Immediate コールバックはキューに登録されず、そのコールバックを送信したスレッドですぐに実行されます。 即時ディスパッチ モードを実装する例については、「複合タスク キューを作成する」を参照してください。

解説

この列挙型は、タスクキューの作業および完了ポートのディスパッチ モードを指定するために、XTaskQueueCreate によって使用されます。

処理ポートと完了ポートでは異なるディスパッチ モードを使用できます。 たとえば、処理ポートではスレッド プール ディスパッチ モードを使用して、システム スレッド キューでコールバックを並行して自動登録/実行しながら、完了ポートでは手動ディスパッチ モードを使用して、Windows メッセージ ループ スレッドに手動で登録/実行できます。 詳細については、「Windows メッセージ ループでのタスク キューの使用」を参照してください。

要件

ヘッダー: XTaskQueue.h

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XTaskQueue のメンバー
非同期プログラミング モデル
非同期タスク キューの設計