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

C++ 中std::promise和std::future基本使用

1.代码示例

# cat promise_future.cpp 
#include <iostream>
#include <thread>
#include <future>
#include <chrono>

// 模拟一个异步任务
void asyncTask(std::promise<void>& promiseObj) {
    std::cout << "异步任务开始...\n";
    
    // 模拟一些耗时操作
    std::this_thread::sleep_for(std::chrono::seconds(3));
    
    std::cout << "异步任务完成!\n";
    
    // 设置 promise 完成状态,通知等待的线程
    promiseObj.set_value();
}

int main() {
    // 创建 std::promise<void> 对象
    std::promise<void> promiseObj;
    
    // 获取与 promise 关联的 future 对象
    std::future<void> futureObj = promiseObj.get_future();
    
    // 启动一个新线程,传递 promise 对象
    std::thread t(asyncTask, std::ref(promiseObj));
    
    std::cout << "主线程等待异步任务完成...\n";
    
    // 等待异步任务完成(通过 future 等待)
    futureObj.wait();  // 阻塞主线程,直到 promise 被设置
    
    std::cout << "主线程收到通知,异步任务已经完成!\n";
    
    // 等待子线程结束
    t.join();
    
    return 0;
}

​

2.编译

#g++  promise_future.cpp

3.测试

# ./a.out 
主线程等待异步任务完成...
异步任务开始...
异步任务完成!
主线程收到通知,异步任务已经完成!


http://www.kler.cn/news/311962.html

相关文章:

  • OpenCV基础入门30讲(Python)——第二讲 图像色彩转换
  • 卷积参数量计算公式
  • GO主流开源框架
  • python测试开发---js基础
  • 网工请注意!华为认证笔试考试系统升级公告!
  • Matlab Delany-Bazley和Miki模型预测多孔材料吸声性能
  • pprof简单使用
  • 五、I/O与网络编程-5.2、网络编程
  • 全国各省山峰分布SHP数据
  • 【深度学习】(3)--损失函数
  • git使用“保姆级”教程1——简介及配置项设置
  • Kafka基础概念
  • Vivado FIR IP 详解 (一)
  • yolo车位数据集
  • MATLAB 图像处理入门详解
  • 油烟机制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 2.计算机网络基础
  • C# 比较对象新思路,利用反射技术打造更灵活的比较工具
  • 基于 jenkins 的持续集成、持续部署方案
  • 自然语言处理入门:从基础概念到实战项目
  • 计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Redis性能测试redis-benchmark
  • ORACLE SAVEPOINT保存点
  • Vue 中常用的基础指令
  • 一、编译原理(引论)
  • 【Python技术】使用akshare、scikit-learn预测股票涨跌简单例子
  • web基础—dvwa靶场(九)Weak Session IDs
  • 组题能力研判:基于教师上传试卷的深度分析
  • AI应用的时代:从大模型到个性化创新
  • 【Python】练习:控制语句(二)第2关