次の方法で共有


when_any 関数

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

template<
   typename _Iterator
>
auto when_any(
   _Iterator_Begin,
   _Iterator_End,
   const task_options& _TaskOptions = task_options()
) -> decltype (details::_WhenAnyImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_TaskOptions, _Begin, _End));

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

パラメーター

  • _Iterator
    入力反復子の型。

  • _Begin
    結果のタスクに組み込まれる要素範囲内にある最初の要素の位置。

  • _End
    結果のタスクに組み込まれる要素範囲外にある最初の要素の位置。

  • _TaskOptions

  • _CancellationToken
    返されたタスクの取り消しを制御するキャンセル トークン。 キャンセル トークンを指定しない場合、結果のタスクは、完了の原因となったタスクのキャンセル トークンを受け取ります。

戻り値

入力したタスクのいずれかが正常に完了したときに正常に完了するタスク。 入力したタスクの種類が T である場合、この関数の出力は task<std::pair<T, size_t>>> になります。ここでは、pair の最初の要素は完了したタスクの結果であり、2 番目の要素は完了したタスクのインデックスです。 入力したタスクの種類が void である場合、出力は task<size_t> になります。この場合、結果は完了したタスクのインデックスです。

解説

when_any は、その結果、task を生成する、非ブロッキング関数です。 task::wait とは異なり、ASTA (アプリケーション STA) スレッドの Windows ストア アプリケーションでのこの関数の呼び出しは安全です。

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

必要条件

ヘッダー: ppltasks.h

名前空間: concurrency

参照

関連項目

concurrency 名前空間

概念

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