次の方法で共有


structured_task_group::run_and_wait メソッド

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

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」を参照してください。

解説

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

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

この関数から制御が戻った後は、structured_task_group オブジェクトは終了状態であると考えられるため、使用しないでください。 run_and_wait メソッドから制御が戻った後で使用すると、未定義の動作が発生します。

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

必要条件

ヘッダー: ppl.h

名前空間: Concurrency

参照

参照

structured_task_group クラス

structured_task_group::run メソッド

structured_task_group::wait メソッド

概念

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