C++标准库函数std::async
1、std::async
std::async
是C++11的标准库函数,用于创建执行异步任务并返回std::future对象来获取异步执行的结果状态。该函数最简单的用法如下所示:
#include <iostream> #include <thread> #include <future> std::string promise_string() { for (int i = 0; i < 200; i++) { std::this_thread::sleep_for(std::chrono::milliseconds(10)); std::cout << "sleep" << std::endl; } return __func__; } int main() { std::future<std::string> fu = std::async(promise_string); system("pause"); }
以上代码中promise_string函数将在后台与主线程同步执行。
2、std::async的两种执行策略std::launch::async与std::launch::deferred
... std::future<std::string> fu = std::async(std::launch::async, promise_string); system("pause"); ... std::future<std::string> fu = std::async(std::launch::deferred, promise_string);
std::cout << fu.get().c_str() << std::endl; system("pause");
策略std::launch::async强制在新线程中执行,但并不保证一定会在新线程中执行异步任务,具体的执行方式取决于实现;策略std::launch::deferred延迟执行,直到调用get()或wait()函数。以上两段代码展示两种策略下异步任务的执行,在std::launch::deferred策略下,不调用fu.get(),异步任务将不会执行。
又没有什么可说的
分类:
C++进阶
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界