C++ 11中如何详细运用std::async进行异步编程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1314个文字,预计阅读时间需要6分钟。
C++11中的std::async是一个模板函数。std::async异步调用函数,在某个时刻以Args作为参数(可变长参数)调用Fn,无需等待Fn执行完成即可返回。返回结果是一个std::future对象。Fn返回的值可以通过std::future获取。
C++11中的std::async是个模板函数。std::async异步调用函数,在某个时候以Args作为参数(可变长参数)调用Fn,无需等待Fn执行完成就可返回,返回结果是个std::future对象。Fn返回的值可通过std::future对象的get成员函数获取。一旦完成Fn的执行,共享状态将包含Fn返回的值并ready。
std::async有两个版本:
1.无需显示指定启动策略,自动选择,因此启动策略是不确定的,可能是std::launch::async,也可能是std::launch::deferred,或者是两者的任意组合,取决于它们的系统和特定库实现。
2.允许调用者选择特定的启动策略。
std::async的启动策略类型是个枚举类enum class launch,包括:
1. std::launch::async:异步,启动一个新的线程调用Fn,该函数由新线程异步调用,并且将其返回值与共享状态的访问点同步。
本文共计1314个文字,预计阅读时间需要6分钟。
C++11中的std::async是一个模板函数。std::async异步调用函数,在某个时刻以Args作为参数(可变长参数)调用Fn,无需等待Fn执行完成即可返回。返回结果是一个std::future对象。Fn返回的值可以通过std::future获取。
C++11中的std::async是个模板函数。std::async异步调用函数,在某个时候以Args作为参数(可变长参数)调用Fn,无需等待Fn执行完成就可返回,返回结果是个std::future对象。Fn返回的值可通过std::future对象的get成员函数获取。一旦完成Fn的执行,共享状态将包含Fn返回的值并ready。
std::async有两个版本:
1.无需显示指定启动策略,自动选择,因此启动策略是不确定的,可能是std::launch::async,也可能是std::launch::deferred,或者是两者的任意组合,取决于它们的系统和特定库实现。
2.允许调用者选择特定的启动策略。
std::async的启动策略类型是个枚举类enum class launch,包括:
1. std::launch::async:异步,启动一个新的线程调用Fn,该函数由新线程异步调用,并且将其返回值与共享状态的访问点同步。

