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
**命名空间:**并发