线程之间共享数据
来源:互联网 发布:淘宝停留时间怎么看 编辑:程序博客网 时间:2024/05/17 22:26
#include <iostream> // std::cin, std::cout, std::ios#include <functional> // std::ref#include <thread> // std::thread#include <future> // std::promise, std::future#include <exception> // std::exception, std::current_exceptionvoid task(std::promise<int>& prom){ int x = 0; /* * 这里一般一个非常耗时耗cpu的操作如查找,计算等,在此过程中得到x的最终值,这里我们直接赋值为10 */ x = 10; //设置共享状态的值,同时promise会设置为ready prom.set_value(10); }void print_int(std::future<int>& fut) { //如果共享状态没有设置ready,调用get会阻塞当前线程 int x = fut.get(); std::cout << "value: " << x << '\n';}int main (){ // 生成一个 std::promise<int> 对象. std::promise<int> prom; // 和 future 关联. std::future<int> fut = prom.get_future(); // 将 prom交给另外一个线程t1 注:std::ref,promise对象禁止拷贝构造,以引用方式传递 std::thread th1(task, std::ref(prom)); // 将 future 交给另外一个线程t. std::thread th2(print_int, std::ref(fut)); /* *主线程这里我们可以继续做一大堆我们想做的事,不用等待耗时的task线程,也不会因为等待task的执行结果而阻塞 */ th1.join(); th2.join(); return 0;}
阅读全文
0 0
- 线程之间共享数据
- 关于线程、进程之间的数据共享
- 多个线程之间共享数据
- 7-多个线程之间共享数据
- 多个线程之间共享数据
- Java不同线程之间实现数据共享
- 多个线程之间共享数据
- 线程初始化和线程之间的数据共享
- Java多个线程之间处理共享数据的方式
- Java多个线程之间处理共享数据的方式
- Java多个线程之间处理共享数据的方式
- Java多个线程之间处理共享数据的方式
- Java多个线程之间处理共享数据的方式
- Java多个线程之间处理共享数据的方式
- 多个线程之间共享数据的方式
- 多个线程之间共享数据的方式
- 多个线程之间共享数据的方式探讨
- JAVA 并发编程-多个线程之间共享数据
- 适配器模式
- HTML5权威指南笔记:21-创建布局
- linux 驱动学习之kmalloc 内存分配
- springboot-email 邮件发送实战
- 28-友元
- 线程之间共享数据
- HDU 2020 绝对值排序
- [ElasticSearch]数据类型keyword和text的区别
- python 数据分析 numpy基础
- 创建 CentOS7容器 需要注意的地方
- C 函数指针与回调函数
- 欢迎使用CSDN-markdown编辑器
- 深入理解 CSS 属性:touch-action
- OI选手之路的开始------第一次初赛前后