次の方法で共有


when_all 関数

引数として指定されたタスクのすべてが正常に完了したら正常に完了するタスクを作成します。

template <
   typename _Iterator
>
auto when_all(
   _Iterator_Begin,
   _Iterator_End
) -> decltype (details::_WhenAllImpl<std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(nullptr, _Begin, _End));

template <
   typename _Iterator
>
auto when_all(
   _Iterator_Begin,
   _Iterator_End,
   cancellation_token _CancellationToken
) -> decltype (details::_WhenAllImpl<std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_CancellationToken._GetImplValue(), _Begin, _End));

パラメーター

  • _Iterator
    入力反復子の型。

  • _Begin
    結果のタスクに結合する要素範囲内の先頭の要素の位置。

  • _End
    結果のタスクに結合する要素範囲を超える最初の要素の位置。

  • _CancellationToken
    返されたタスクのキャンセルを制御するキャンセル トークン。キャンセル トークンを指定しない場合、結果のタスクはすべてのキャンセル トークンの組み合わせ (指定されたタスクの **cancellation_token::none()**なくメソッドによって作成されたトークンであるトークンで作成されます。

戻り値

入力すべてのタスクが正常に完了したときに正常に完了したタスク。入力タスクは型 T場合、この関数の出力は **task<std::vector<T>>**です。入力タスクは型 void タスクの出力は、 **task<void>**です。

解説

タスクの 1 つが、キャンセルまたは例外をスローした場合、返されたタスクが取り消された状態で、迅速に完了し、そのタスクの get()wait() をダイヤルする場合は 1 が encoutered、例外がスローされます。

必要条件

ヘッダー: ppltasks.h

名前空間: の同時実行

参照

関連項目

concurrency 名前空間

概念

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