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