[C++11] promise && future leanrning notes
用人话就是,主线程传给附属线程一个promise Object,然后主线程想要获取附属线程set给promise Object的值(也就是该线程返回的某个结果),需要通过主线程中的promise object 得到对应的future object(每个promise 对应一个 future),然后调用future 的get方法。如果附属线程没有执行作为参数传入的promise的set方法去返回结果,那么程序就会block住。
1 /* ***********************************************
2 Author :111qqz
3 mail: renkuanze@sensetime.com
4 Created Time :2018年08月23日 星期四 10时37分07秒
5 File Name :future_sample.cpp
6 ************************************************ */
7
8 #include <iostream>
9 #include <thread>
10 #include <future>
11
12 void initiazer(std::promise<int> * promObj)
13 {
14 //std::cout<<"Inside Thread"<<std::endl;
15 for ( int i = 1 ; i <= 2000000000 ; i++);
16 //promObj->set_value(35);
17 }
18
19 int main()
20 {
21 std::promise<int> promiseObj;
22 std::future<int> futureObj = promiseObj.get_future();
23 std::thread th(initiazer, &promiseObj);
24 std::cout<<futureObj.get()<<std::endl;
25 th.join();
26 return 0;
27 }
28
参考资料:
C++11 Multithreading – Part 7: Condition Variables Explained