C++多线程获取返回值的方法是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"C++多线程获取返回值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++多线程获取返回值的方法是什么"吧!我们通过一个例子
千家信息网最后更新 2026年11月03日C++多线程获取返回值的方法是什么
本篇内容主要讲解"C++多线程获取返回值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++多线程获取返回值的方法是什么"吧!
我们通过一个例子来说明如何实现这个需求。用多个线程计算(a+b)/ (x+y) 的值
有两种方法,分别是
1. 传统的方法:在线程间共享指针
#include#include#include#includeusing namespace std; void func2(int x, int y,int* ans) { *ans= x + y;} int main(){ //计算(a+b)/(x+y) //用三个线程,一个线程计算a+b,另一个线程计算x+y int a, b, x, y; a = 10, b = 8, x = 2, y = 4; int* sum1 = new int(0); int* sum2 = new int(0); thread t1(func2, a, b, sum1); t1.join(); thread t2(func2, x, y, sum2); t2.join(); cout << (*sum1) / (*sum2) << endl; delete sum1; delete sum2; system("pause"); return 0;}2. C++11的方法:使用std::future和std::promise
std::future和std::promise是封装好的两个类模板,这两个类需要配合使用,他们的头文件是#include
std::future,它表示存储着一个未来会被初始化的变量。这个变量可以通过std::future提供的成员函数std::future::get()来得到。如果在这个变量被赋值之前就有别的线程试图通过std::future::get()获取这个变量,那么这个线程将会被阻塞到这个变量可以获取为止。
std::promise同样也是一个类模板,这个对象承诺在未来一定会初始化一个变量(这个变量也就是std::future中的变量)。
每一个std::promise对象都有一个与之关联的std::future对象。当std::promise设置值的时候,这个值就会赋给std::future中的对象了。
#include#include#include#include#include//std::future std::promise#include//std::ref模板传参的时候使用 void func2(int x, int y,std::promise&promiseObj) { promiseObj.set_value(x+y);} int main(){ //计算(a+b)/(x+y) //用三个线程,一个线程计算a+b,另一个线程计算x+y int a, b, x, y; a = 10, b = 8, x = 2, y = 4; int sum1, sum2; //声明一个类 std::promisepromiseObj; //将future和promise关联 std::futurefutureObj = promiseObj.get_future(); //模板传参的时候使用ref,否则传参失败 std::thread t1(func2, a, b, ref(promiseObj)); t1.join(); //获取值 sum1 = futureObj.get(); std::cout << "sum1=" << sum1 << std::endl; //不能直接复用上面的future和promise std::promisepromiseObj2; std::futurefutureObj2 = promiseObj2.get_future(); std::thread t2(func2, x, y, ref(promiseObj2)); t2.join(); sum2 = futureObj2.get(); std::cout << "sum2=" << sum2 << std::endl; std::cout << "sum1/sum2=" << sum1 / sum2 << std::endl; std::system("pause"); return 0;}到此,相信大家对"C++多线程获取返回值的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
线程
变量
方法
对象
模板
C++
时候
三个
两个
内容
关联
学习
实用
更深
也就是
传统
例子
兴趣
函数
可以通过
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技海报
上海挚品互联网科技有限公司
国智互联网科技
A股互联网金融科技公司
互联网科技社
为想互联网科技
紫鲸互联网科技
有木互联网科技
亿人帮互联网科技
汉立互联网科技有限公司联系电话
华中科技有哪些互联网大佬
安控科技rtu产品工业互联网
卫星互联网科技股票
农村开互联网科技讲堂
移动互联网科技公司
35岁以上互联网科技行业
全球科技与互联网公司市值变化
长沙渺峰互联网科技有限公司
互联网科技创新方面的资料
现代科技的标志之一的互联网
蓝思科技飞鸽互联网
金诺互联网科技
善班互联网科技有限公司
移动互联网科技股
千方科技属于互联网企业吗
电子科技大学互联网创业大赛
互联网科技人工智能实验室
996高科技互联网公司
互联网科技圈年度人物
互联网企业科技类企业如何做账