create_task 函数

创建一个 PPL 任务对象。 只要是在您会使用任务构造函数的地方都可以使用 create_task。 主要为了方便而提供,因为它允许在创建任务时使用 auto 关键字。

template<
   typename _Ty
>
__declspec(
   noinline
) auto create_task(_Ty _Param, const task_options& _TaskOptions = task_options()) -> task<typename details::_TaskTypeFromParam<_Ty>::_Type>;

template<
   typename _ReturnType
>
__declspec(
   noinline
) task<_ReturnType> create_task(const task<_ReturnType>& _Task);

参数

  • _Ty
    从中构造任务的参数的类型。

  • _ReturnType

  • _Param
    从中构造任务的参数。 如果您使用 Windows 应用商店应用中的任务,则这可能是 lambda、函数对象、 task_completion_event 对象,另一个 task 对象,或 Windows::Foundation::IAsyncInfo 接口。

  • _TaskOptions

  • _Task

返回值

从 _Param 上推断的 T 类型的新任务。

备注

第一个重载的行为与采用单个参数的任务构造函数类似。

第二个超负载关联了提供新创建任务的取消标记。 如果使用此重载,在不同的 task 对象中将不允许您作为第一个参数传递。

返回任务类型是从函数的第一个参数推断的。 如果 _Param 是 task_completion_event<T>task<T> 或返回 Ttask<T> 类型的仿函数,创建的任务的类型将为 task<T>

在 Windows 应用商店应用中,如果 _Param 是 Windows::Foundation::IAsyncOperation<T>^ 或 Windows::Foundation::IAsyncOperationWithProgress<T、P>^ 的类型,或为返回这两个类型的仿函数,则创建的任务将为 task<T> 类型。 如果 _Param 是 Windows::Foundation::IAsyncAction^ 或 Windows::Foundation::IAsyncActionWithProgress<P>^ 的所属类型,或是返回所有这些类型的仿函数,创建的任务将具有 task<void> 类型。

要求

**标头:**ppltasks.h

**命名空间:**并发

请参见

参考

concurrency 命名空间

task 类

概念

任务并行(并发运行时)