异步功能
表示一个 异步提供程序。
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);
参数
- policy
生成 值。
备注
缩写的定义:
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::async 或 launch::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