异步功能

表示一个 异步提供程序。

template<class Fn, class... ArgTypes>
   future<typename result_of<Fn(ArgTypes...)>::type>;
      async(Fn&& fn, ArgTypes&&... args);
template<class Fn, class... ArgTypes>
   future<typename result_of<Fn(ArgTypes...)>::type>;
      async(launch policy, Fn&& fn, ArgTypes&&... args);

参数

备注

缩写的定义:

dfn

调用 decay_copy(forward<Fn>(fn))的结果。

dargs

结果的调用 decay_copy(forward<ArgsTypes>(args…))。

Ty

类型result_of<Fn(ArgTypes…)>::type。

第一个模板函数返回 async(launch::any, fn, args…)。

第二个函数返回与 dfn 和 dargs 的值和线程对象 关联异步状态 保存结果管理执行单独的线程上 future<Ty> 对象。

除了生成外,除非 decay<Fn>::type 是类型,第二个函数不参与超加载解析。

如果 policy 是 launch::any,此功能可能选择 launch::asynclaunch::deferred。 此实现中,该函数使用 launch::async

如果 policy 是 launch::async,函数创建计算 INVOKE(dfn, dargs..., Ty)的线程。 然后再创建线程,而无需等待的结果后,则函数返回。 如果系统无法启动新线程,具有 resource_unavailable_try_again错误代码的函数引发 system_error

如果 policy 是 launch::deferred,该功能指示其关联的异步状态,因为存放一个 延迟函数 并返回。 第一次调用等到关联的异步状态准备好通过计算的 INVOKE(dfn, dargs..., Ty)实际调用延迟函数的所有非计时功能。

在所有情况下,future 对象关联的异步状态未设置 准备,直到 INVOKE(dfn, dargs…, Ty) 的计算完成,通过引发异常或通过常规返回。 该关联的异步模式的结果是个例外,如果一个引发了,或被计算返回的任何值。

打印功能 INVOKE<functional>定义。

要求

**标头:**将来

**命名空间:**std

请参见

参考

<future>

result_of Class

将来的选件类

其他资源

标头文件