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 }
标签:std,异步,include,C++,future,promise,chap3,多线程 来源: https://www.cnblogs.com/music-liang/p/15642833.html