when_all 函数

创建将成功完成的任务,并以参数中提供的所有任务成功完成。

template <
   typename _Iterator
>
auto when_all(
   _Iterator_Begin,
   _Iterator_End
) -> decltype (details::_WhenAllImpl<std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(nullptr, _Begin, _End));

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

参数

  • _Iterator
    输入迭代器的类型。

  • _Begin
    第一个元素的位置在要合并的元素范围内到所生成的任务。

  • _End
    第一个元素的位置在要合并的元素范围的到所生成的任务。

  • _CancellationToken
    控件返回的任务取消的取消标记。 如果未提供一个取消标记,发生的任务将是所有可取消标记的标记将创建 (方法创建的标记的组合除了提供的任务的 **cancellation_token::none()**之外。

返回值

成功完成任务,则所有输入任务成功完成。 如果输入任务的类型为 T,此功能输出将为 task<std::vector<T>>。 如果输入任务的类型为 void 输出任务也将是 task<void>

备注

如果其中一个任务取消或引发异常,返回的任务处于已取消状态之前将完成,,并且,异常,因此,如果一个 encoutered,将会引发,如果调用 get()wait() 在该任务。

要求

标题: ppltasks.h

命名空间: 并发

请参见

参考

concurrency 命名空间

概念

任务并行(并发运行时)