std::promise和std::future是C++11提供的单次异步通信机制,promise负责设置值或异常,future用于等待并获取该结果;shared_future支持多处并发等待同一结果。

std::promise 和 std::future 是 C++11 引入的异步通信机制,用于在线程间安全地传递单次结果。它们不负责执行任务,只负责“承诺一个值”和“获取那个值”,常与 std::thread、std::async 或线程池配合使用。
一个 std::promise 对象代表一个可写的“结果容器”。它只能设置一次值(或异常),之后再调用 set_value / set_exception 会抛出 std::future_error。
std::future 是只读句柄,代表一个“尚未就绪但将来会出现的值”。它支持阻塞等待、限时等待、轮询检查,也可移动(不可拷贝)。
常见场景是主线程创建 promise/fu
ture 对,把 promise 移交给工作线程,自己保留 future 等待结果。
Songtell
Songtell是第一个人工智能生成的歌曲含义库
164
查看详情
立即学习“C++免费学习笔记(深入)”;
std::promise<int> p;
std::future<int> f = p.get_future();
std::thread t([&p]() {
std::this_thread::sleep_for(1s);
p.set_value(42); // 工作线程完成计算后交付结果
});
t.detach(); // 或 join()
// 主线程等待结果
int result = f.get(); // 阻塞直到 set_value 被调用
std::future 不可拷贝,如果多个地方需要等待同一个结果,需用 std::shared_future。它由 future.share() 创建,允许多个实例同时 wait / get(但 get 仍只能调用一次 per instance,且所有实例共享底层状态)。
基本上就这些。promise/future 不复杂但容易忽略细节——比如忘记 detach/join 线程、重复调用 get、误用拷贝 future,都会导致未定义行为或死锁。用好它们的关键是明确“谁生产、谁消费、何时交付、如何容错”。
以上就是c++++中std::promise和std::future怎么用_c++异步编程模型详解【多线程】的详细内容,更多请关注其它相关文章!
相关文章:
将JSON对象数组转置为键值对列表的实用指南
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】
单射、满射与双射的关系 一文理清所有逻辑
优化大型XML文件解析:基于Python流式处理的内存高效方案
微信网页版扫码登录入口 微信网页版二维码登录入口
解决 Express.js 中 PUT 请求密码修改失败的路由配置指南
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
PHP实现即时文章发布与单次数据库写入:自提交模式教程
特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
微信聊天记录怎么加密_微信聊天记录加密方法
小红书网页版入口链接分享 小红书官网直接进
Lar*el Form Request 中唯一性验证更新操作的正确实践
抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
《GTA6》开发画面疑似泄露!这次可不是AI了
怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】
Lar*el Migration:重命名列后添加新列的正确操作顺序
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
mysql备份恢复性能优化_mysql备份恢复性能优化方法
俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问
痛风发作了怎么办? 快速止痛和后期饮食调理
React Hooks最佳实践:动态组件状态管理的组件化方案
EMS快递官网app_中国邮政速递物流手机客户端
AO3最新镜像入口 Archive of Our Own官方平台访问
如何在CSS中使用浮动制作导航栏_float实现水平菜单
J*aScript中高效管理与清空动态列表:避免循环陷阱
AO3同人作品网入口 AO3搜索引擎官网永久地址
优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践
深入理解J*a链表中的IPosition接口与使用
铁路12306官网网页端快速入口 铁路12306官方首页登录教程
钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧
《燕云十六声》两周内达九百万玩家!位居畅销榜第五
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
小米14应用无法联网原因分析_小米14网络权限修复
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
必由学官方网站入口 必由学学生教师共用登录通道
4399网页游戏电脑版全新入口 4399电脑端在线玩指南
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
网易大神账号申诉需要多久_网易大神账号申诉流程说明
在J*a中如何隐藏复杂性_使用门面模式组织对象交互
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】