共用方式為


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>>>,其中配對的第一個項目是完成工作的結果,而第二個項目是已完成工作的索引。 如果輸入工作屬於類型 void,則輸出是 task<size_t>,其中結果為完成工作的索引。

備註

when_any 是產生 task 做為其結果的未封鎖函式。 不同於 task::wait,在 ASTA (應用程式 STA) 執行緒上呼叫 Windows 市集應用程式的這個函式是安全的。

如需詳細資訊,請參閱工作平行處理原則 (並行執行階段)

需求

**標頭:**ppltasks.h

**命名空間:**concurrency

請參閱

參考

concurrency 命名空間

概念

工作平行處理原則 (並行執行階段)