C++多线程编程promise
2019-08-04 11:58
1536 查看
文章目录
1、头文件
#include <future>
2、std::promise类介绍
std::promise用来包装一个值将数据和future绑定起来,为获取线程函数中的某个值提供便利,取值是间接通过promise内部提供的future来获取的。promise的主要目的是提供一个“Set”操作,以和future的get()对应。
3、get_future函数
该函数返回一个与promise共享状态相关的future对象。返回的future对象可以访问由promise对象设置在共享状态上的值或者某个异常对象,promise对象通常会在某个时间点准备好(设置一个值或者一个异常对象),然后在另一个线程中future对象使用get获取值
4、set_value函数
设置共享状态的值,此后promise的共享状态标志变为ready
5、set_exception函数
为promise设置异常,此后promise的共享状态标志变为ready
6、举例
#include<iostream> #include<future> #include<thread> using namespace std; using namespace std::this_thread; using namespace std::chrono; //费时操作 void work( promise<int> & prom) { cout << "开始计算!" << endl; sleep_for(seconds(5)); //promise设置结果值 cout << "计算完成!" << endl; prom.set_value(666);//设置结果,future会get到 } int main() { //定义一个promise promise<int> prom; //future和promise搭配使用,类似于aynsc future<int> result= prom.get_future(); thread t1(work , ref( prom) ); t1.detach(); int sum=result.get(); cout << "获取结果:" << sum << endl; return 0; }
相关文章推荐
- C++多线程编程例子 Demo 关键代码段 临界区 实现线程同步
- c/c++: 多线程编程基础讲解(六)
- c++ 多线程编程
- C++多线程编程简单体会
- C++ 关于MFC多线程编程的注意事项
- c/c++: 多线程编程基础讲解(五)
- c++多线程编程安全性简单说明
- Linux下多线程编程——C++版本
- C++多线程编程入门之经典实例
- C++多线程编程入门之经典实例
- linux C++多线程编程介绍
- 巩固C++(二)----多线程编程
- c/c++: 多线程编程基础讲解(四)
- [Win32]C++多线程编程实例
- c++ 11 多线程编程--互斥体类(1)
- 【C/C++多线程编程之三】创建pthread线程
- c/c++: 多线程编程基础讲解(六)
- C++多线程编程入门之经典实例
- Windows平台下多线程编程基础(C++)
- c++ 多线程编程常用的几个函数