task_group::run_and_wait 方法

task_group 对象的帮助下安排任务在调用上下文上运行内联来获取完全取消支持。 该函数等待直到在 task_group 对象上的所有工作都已完成或取消。 如果将 task_handle 对象作为参数传递给 run_and_wait,则调用方将负责管理 task_handle 对象的生存期。

template<
   class _Function
>
task_group_status run_and_wait(
   task_handle<_Function>& _Task_handle
);
template<
   class _Function
>
task_group_status run_and_wait(
   const _Function& _Func
);

参数

  • _Function
    将调用的函数对象类型,以执行任务句柄的主体。

  • _Task_handle
    任务的句柄,将在调用上下文时运行内联。 请注意调用方要负责此对象的生存期。 运行时将继续预期其存留,直至 run_and_wait 方法完成执行。

  • _Func
    一个函数,将被调用以调用该工作的正文。 这可以是 lambda 表达式或支持函数调用运算符某个版本的其他对象,具有签名 void operator()()

返回值

指示等待是否符合要求或任务组是否已取消,原因是明确的取消操作或从其任务之一引发的异常。 有关更多信息,请参见 task_group_status

备注

请注意,对此 task_group 对象计划的一个或多个任务可能会在调用上下文上执行内联。

如果将一个或多个任务安排到 task_group 对象会引发异常,则运行时将选择其选定的此类异常之一,并将其传播到 run_and_wait 方法调用以外的调用。

task_group 对象上从 run_and_wait 方法返回后,运行时将重设对象为可以重复使用对象的干净状态。 这包括其中 task_group 对象已被取消的情况。

在不出现异常的执行路径中,您可以在 task_group 的析构函数执行之前调用此方法或 wait 方法。

要求

**标头:**ppl.h

命名空间: 并发

请参见

参考

task_group 类

task_group::run 方法

task_group::wait 方法

概念

任务并行(并发运行时)