structured_task_group::run_and_wait 方法

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

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

备注

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

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

在返回此函数后,structured_task_group 对象被视为处于最终状态,并且不应使用。 请注意,run_and_wait 方法返回后,使用该方法将会产生未定义的行为。

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

要求

**标头:**ppl.h

**命名空间:**并发

请参见

参考

structured_task_group 类

structured_task_group::run 方法

structured_task_group::wait 方法

概念

任务并行(并发运行时)