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 命名空间

概念

任务并行(并发运行时)