次の方法で共有


task_group::run_and_wait メソッド

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

template<
   class _Function
>
task_group_status run_and_wait(
   task_handle<_Function>& _Task_handle
);

template<
   class _Function
>
task_group_status run_and_wait(
   const _Function& _Func
);

パラメーター

  • _Function
    タスクの本体を実行するために呼び出される関数オブジェクトの型。

  • _Task_handle
    呼び出し元コンテキストでインラインで実行されるタスクのハンドル。 呼び出し元はこのオブジェクトの有効期間を管理します。 ランタイムでは、run_and_wait メソッドの実行が終了するまでオブジェクトが有効であると見なします。

  • _Func
    作業の本体を呼び出すために呼び出される関数。 ラムダ式、またはシグネチャ void operator()() を持つ関数呼び出し演算子のバージョンをサポートするその他のオブジェクトを使用できます。

戻り値

待機条件が満たされたか、または (明示的な取り消し操作が行われたかまたはいずれかのタスクから例外がスローされたことによって) タスク グループが取り消されたかを示す値。 詳細については、「task_group_status」を参照してください。

解説

この task_group オブジェクトにスケジュールされた 1 つまたは複数のタスクは、呼び出し元コンテキストにおいてインラインで実行される場合があります。

この task_group オブジェクトにスケジュールされた 1 つまたは複数のタスクが例外をスローした場合、ランタイムはこのような例外の 1 つを選択し、それを呼び出しから run_and_wait メソッドに伝達します。

task_group オブジェクトに対して run_and_wait メソッドを実行した後、操作が戻ると、ランタイムによりオブジェクトがクリーンな状態にリセットされ、再利用できるようになります。 これには、task_group オブジェクトが取り消された場合も含まれます。

例外的ではない実行パスでは、task_group のデストラクターが実行される前に、このメソッドまたは wait メソッドを呼び出すこともできます。

必要条件

ヘッダー: ppl.h

名前空間: concurrency

参照

関連項目

task_group クラス

task_group::run メソッド

task_group::wait メソッド

概念

タスクの並列化 (同時実行ランタイム)