C++多线程-chap3 多线程异步和通信
2021/12/4 20:18:30
本文主要是介绍C++多线程-chap3 多线程异步和通信,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这里,只是记录自己的学习笔记。
顺便和大家分享多线程的基础知识。然后从入门到实战。有代码。
知识点来源:
https://edu.51cto.com/course/26869.html
Promise 和 Future 的原理,以及演示
1 //线程异步和通信 2 3 4 /* 5 //promise 和 future 6 7 promise 用于异步传输变量 8 std::promise 提供存储异步通信的值,再通过其对象创建的std::future异步获得结果。 9 std::promise 只能使用一次。void set_value(_Ty&& _Val)设置传递值,只能调用一次 10 11 std::future 提供访问异步操作结果的机制 12 get()阻塞等待 promise set_value 的值 13 14 */ 15 16 #include <iostream> 17 #include <thread> 18 #include <future> 19 #include <string> 20 using namespace std; 21 22 void TestFuture( promise<string> p){ 23 cout << "begin TestFuture" << endl; 24 25 this_thread::sleep_for(4s); 26 cout << "begin set value" << endl; 27 28 p.set_value("TestFuture value"); 29 this_thread::sleep_for(4s); 30 31 cout << "end TestFuture" << endl; 32 } 33 34 int main() { 35 //异步传输变量存储 36 promise<string> p; 37 38 //用来获取线程异步值 39 auto future = p.get_future(); 40 41 thread th(TestFuture, move(p)); 42 43 cout << "begin future.get()" << endl; 44 cout << "future get() =" << future.get() << endl;//线程在此处阻塞。等到 调用了 set_value 之后,阻塞取消。 45 cout << "end future.get()" << endl; 46 th.join(); 47 48 // begin future.get()...线程在此处阻塞。等到 调用了 set_value 之后,阻塞取消。 49 // begin TestFuture 50 // begin set value 51 // future get() = TestFuture value 52 // end future.get() 53 // end TestFuture 54 55 56 getchar(); 57 return 0; 58 }
这篇关于C++多线程-chap3 多线程异步和通信的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在使用平台私钥进行解密时提示 "私钥解密失败" 错误信息是什么原因?-icode9专业技术文章分享
- 2024-11-15Layui框架有哪些方式引入?-icode9专业技术文章分享
- 2024-11-15Layui框架中有哪些减少对全局环境的污染方法?-icode9专业技术文章分享
- 2024-11-15laydate怎么关闭自动的日期格式校验功能?-icode9专业技术文章分享
- 2024-11-15laydate怎么取消初始日期校验?-icode9专业技术文章分享
- 2024-11-15SendGrid 的邮件发送时,怎么设置回复邮箱?-icode9专业技术文章分享
- 2024-11-15使用 SendGrid API 发送邮件后获取到唯一的请求 ID?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 tags标签最多有多少个?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 怎么批量发送给多个人?-icode9专业技术文章分享
- 2024-11-15如何搭建web开发环境并实现 web项目在浏览器中访问?-icode9专业技术文章分享