when_all 函数

创建一个任务,在作为参数提供的所有任务成功完成后,此任务将成功完成。

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

参数

  • _Iterator
    输入迭代器的类型。

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

  • _End
    第一个元素的位置超出了要合并到结果任务的元素范围。

  • _TaskOptions

返回值

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

备注

when_all 是一种非阻塞函数,其生成结果为 task。 不同于 task::wait,在 ASTA(应用程序 STA)线程上的 Windows 应用商店 应用程序中调用此函数是安全的。

如果其中一个任务被取消或引发异常,则在取消状态中,返回的任务将提前完成,如果遇到异常,则会在您调用该任务上的 task::gettask::wait 时引发。

有关详细信息,请参阅 任务并行(并发运行时)

要求

**标头:**ppltasks.h

**命名空间:**并发

请参见

参考

concurrency 命名空间

概念

任务并行(并发运行时)