
C++11标准库中的std::async深入解析
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
在C++11框架下,对std::async功能的具体应用进行了全面解析。该异步编程工具的实现机制及其与现有代码库的有效集成方法均被详细阐述。在C++11时代,std::async作为一个模板函数被引入,旨在实现异步执行功能。它会返回一个std::future对象。它的应用方式包括两种主要策略:一种是让编译器自动选择最优的启动方法;另一种则是让调用者自行指定具体的启动策略。
std::async的启动策略类型是一个枚举类,其中包含两个成员:std::launch::async和std::launch::deferred。std::launch::async表示通过非阻塞方式启动新的线程,该函数由新线程在异步调用后与共享状态同步以获取返回值。而std::launch::deferred则代表延迟执行,在访问共享状态时才触发Fn函数的调用。std::async中的参数Fn可以包括函数指针、成员指针以及任何可移动构造类型的函数对象。该参数的返回结果或出现的错误信息储存在共有状态下,以便异步std::future对象获取。参数是传送给Fn执行任务的参数,它们应具有可移动构造特性。std::async的返回值是一个std::future对象,在Fn完成后,共享状态的std::future对象已准备好接受结果。通过调用std::future的对象成员函数get,可以检索Fn执行的结果。在调用std::async时,选择合适的启动策略至关重要。当采用std::launch::async策略时,生成的std::future对象会绑定到相应线程的结束位置,即便从不触碰共享属性。此时,std::future对象的析构方法将同步于Fn返回操作。
以下展示了使用std::async的C++代码示例,该代码演示了如何实现异步函数调用:```cpp
#include
全部评论 (0)


