当前位置: 首页 > news >正文

每日一个C++知识点|异步编程

上篇文章说到C++多线程的基础知识, 这篇文章主要说C++多线程的另一个重要知识–异步

异步

那么什么是异步呢? 当程序执行一个耗时任务的时候, 主线程硬生生等待线程任务结束,不仅效率低, 还会让程序响应变得卡顿

这时候我们可以使用异步编程来解决这个问题,异步编程的核心就是非阻塞地执行任务,
就是让主线程继续干自己的活, 把耗时任务交给后台去执行, 等任务完成后, 再去去结果, 不需要等待

举个例子:这就像你点外卖,不用站在门口等骑手,而是可以继续工作,等外卖到了再去取, 这就是异步编程的精髓

异步编程的实现

在了解什么是异步编程的核心之后, 我们接下来进一步了解应该怎么实现异步编程呢?
实现异步编程的核心工具主要有三个, 分别是std::async:,std::future:,std::launch::async:

std::async:是异步编程的接口, 可以可以自动管理线程, 不用我们手动创建、销毁线程

std::future:用来获取异步任务结果的工具

std::launch::async:是异步编程的启动策略之一, 作用是强制创建新线程来执行任务, 确保任务是真正异步运行的, 除此之外, 还有std::launch::deferred等策略

下面用一个简单的代码示例来实现异步编程核心工具的用法

#include<iostream>#include<future>// 必须包含的头文件#include<chrono>// 用于时间操作// 定义一个耗时的函数:计算某个数的平方,模拟耗时任务intcalculateSquare(intnum){// 模拟耗时操作(比如复杂计算、网络请求)std::this_thread::sleep_for(std::chrono::seconds(2));returnnum*num;}intmain(){std::cout<<"主线程开始执行~"<<std::endl;// 1. 异步执行任务:强制创建线程执行calculateSquare(5)std::future<int>fut=std::async(std::launch::async,calculateSquare,5);// 2. 主线程可以继续执行其他任务,不会被阻塞std::cout<<"主线程在异步任务执行时,还能干别的事~"<<std::endl;// 3. 获取异步任务的结果(如果任务没完成,这里会阻塞等待)intresult=fut.get();// get()只能调用一次,调用后future就会失效std::cout<<"异步任务结果:5的平方是"<<result<<std::endl;std::cout<<"主线程结束~"<<std::endl;return0;}

运行结果如下:

在整个过程中, 主线任务没有因为异步任务的耗时而阻塞, 这正是多线程异步编程的体现

总结

异步是多线程编程的重要组成部分, 其核心是非阻塞执行任务, 并根据自己需要获取结果, 其中std::async,std::futurestd::launch::async是异步编程中最重要的工具

希望这篇文章能帮大家搞懂 C++ 异步编程的基础用法, 如果觉得内容有用,记得点赞和收藏哦~

感兴趣的朋友可以关注CSDN同名公众号 [ 图形学爱好者Wu ] ~后续将会继续分享更多C++干货

http://www.jsqmd.com/news/89008/

相关文章:

  • 探索非线性电液伺服系统的模型预测控制(MPC)之旅
  • Simulink双馈风机稳态模型:从理论到实践
  • 基于单片机的火焰与温度联动检测及声光灭火控制系统
  • 探索三相、五相电机的容错控制奥秘
  • 完整教程:【Nginx 】Nginx 部署前端 vue 项目
  • MATLAB 风力发电系统低电压穿越之串电阻策略探索
  • Best 5 Anime AI Video Tools in 2026 (Free)
  • 探索 S7 - 1200 地铁屏蔽门控制系统
  • 探索高压无桥PFC:原理图、PCB与源代码之旅
  • Java中如何检测死锁?如何预防和避免线程死锁?
  • 自动化测试-关键数据记录(日志+截图+页面源码)
  • 探索非线性电液伺服系统:基于ESO的反步滑模控制之旅
  • 做题记录2.0
  • DAY11@浙大疏锦行
  • 1分钟升级Nature正刊中的蛋白质跨膜结构域
  • MC Workbench6.4电机位置控制
  • 30、Nagios配置与使用全攻略
  • 分治算法刷题总结
  • IPv4地址与IPv6地址
  • Fluent中颗粒流模拟的门道
  • 31、Ubuntu 服务器虚拟化与 KVM 配置指南
  • 官宣:汇纳科技收购华速实业;融速科技完成A+轮融资;3D打印单季破40亿美元|库周报
  • 详谈:解释器模式(二)
  • OpenAI 放大招!GPT-5.2 重磅发布:碾压谷歌 Gemini,替你做 PPT / 写代码,国内这样用最划算
  • 新能源逆变器那些事儿:阻抗建模、扫频验证与稳定性分析
  • AI时代的云安全(一)新挑战与应对思考
  • 中国板材品牌哪家好?山东亦木,环保板材/全屋定制板材/装修环保板材/衣柜专用板材/桦木板/FOSB板/橡胶木/多层板/颗粒板定制实力厂家,老牌子,质量稳定性价比高 - 全局中转站
  • 技术满分,增长零分?互联网项目的广告投放破局指南
  • Java赋能AI智能采编:让百万传媒人提早下班的行业变革方案
  • CF1039A Timetable - crazy-