次の方法で共有


task_group クラス

 

task_group クラスは、待機または取り消しができる並列処理のコレクションを表します。

構文

class task_group;

メンバー

パブリック コンストラクター

名前

説明

task_group::task_group コンストラクター

オーバーロードされます。 新しい task_group オブジェクトを構築します。

task_group::~task_group デストラクター

task_group オブジェクトを破棄します。 例外によるスタック アンワインドの結果としてデストラクターが実行される場合を除き、デストラクターの実行前に、このオブジェクトに対して wait メソッドまたは run_and_wait メソッドを呼び出す必要があります。

パブリック メソッド

名前

説明

task_group::cancel メソッド

このタスク グループをルートとする作業のサブツリーの取り消しをベスト エフォートで試みます。 タスク グループでスケジュールされているすべてのタスクは、可能であれば推移的に取り消されます。

task_group::is_canceling メソッド

タスク グループが現在取り消し処理中であるかどうかを呼び出し元に通知します。 これは、必ずしも task_group オブジェクトで cancel メソッドが呼び出されたことを示しているわけではありません (ただし、その場合、このメソッドは確実に true を返します)。 task_group オブジェクトがインラインで実行されているときに、作業ツリーの上位のタスク グループが既に取り消されていることもあります。 このように、取り消し処理がこの task_group オブジェクトを経由することをラインタイムが事前に判定できる場合も、true が返されます。

task_group::run メソッド

オーバーロードされます。 task_group オブジェクトでタスクをスケジュールします。 task_handle オブジェクトが run にパラメーターとして渡される場合、task_handle オブジェクトの有効期間は呼び出し元によって管理されます。 関数オブジェクトへの参照をパラメーターとして受け取るメソッドのバージョンでは、ランタイム内でのヒープの割り当てが含まれる場合があります。これを、task_handle オブジェクトへの参照を受け取るバージョンと比較した場合、パフォーマンスが低下することがあります。 _Placement パラメーターを受け取るバージョンと、そのパラメーターで指定された場所に実行に向かって偏られているタスクを実行します。

task_group::run_and_wait メソッド

オーバーロードされます。 取り消し処理を完全にサポートするために、task_group オブジェクトを使用して呼び出し元コンテキストでインラインで実行されるようにタスクをスケジュールします。 その後、task_group オブジェクトのすべての処理が完了するか、取り消されるまで待機します。 task_handle オブジェクトが run_and_wait にパラメーターとして渡される場合、task_handle オブジェクトの有効期間は呼び出し元によって管理されます。

task_group::wait メソッド

task_group オブジェクトに対するすべての処理が完了するかまたは取り消されるまで待ちます。

解説

task_group クラスは、厳密に制限された structured_task_group クラスとは異なり、より汎用性の高い構成体です。 structured_task_group のような制限は一切ありません。 task_group オブジェクトは、異なるスレッド間や自由フォーム形式でも安全に使用できます。 task_group 構成体の短所は、structured_task_group 構成体と比べて、少量の処理を実行するタスクについては有効に機能しない点です。

詳細については、「タスクの並列化 (同時実行ランタイム)」を参照してください。

継承階層

task_group

必要条件

ヘッダー: ppl.h

名前空間: concurrency

参照

concurrency 名前空間
structured_task_group クラス
task_handle クラス