when_all 関数
引数として指定されたすべてのタスクが正常に完了したときに正常に完了するタスクを作成します。
template <
typename _Iterator
>
auto when_all(
_Iterator_Begin,
_Iterator_End,
const task_options& _TaskOptions = task_options()
) -> decltype (details::_WhenAllImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_TaskOptions, _Begin, _End));
パラメーター
_Iterator
入力反復子の型。_Begin
結果のタスクに組み込まれる要素範囲内にある最初の要素の位置。_End
結果のタスクに組み込まれる要素範囲外にある最初の要素の位置。_TaskOptions
戻り値
入力したすべてのタスクが正常に完了したときに正常に完了するタスク。 入力したタスクの種類が T である場合、この関数の出力は task<std::vector<T>> になります。 入力したタスクの種類が void である場合、出力のタスクも task<void> になります。
解説
when_all は、その結果、task を生成する、非ブロッキング関数です。 task::wait とは異なり、ASTA (アプリケーション STA) スレッドの Windows ストア アプリケーションでのこの関数の呼び出しは安全です。
タスクのどちらか 1 つが取り消された場合、または例外をスローした場合、返されるタスクは早期に完了し、取り消された状態になります。また例外が発生したときは、そのタスクに対して task::get または task::wait を呼び出す場合に、その例外がスローされます。
詳細については、「タスクの並列化 (同時実行ランタイム)」を参照してください。
必要条件
ヘッダー: ppltasks.h
名前空間: concurrency