[C++11] promise && future leanrning notes

std::promise and std::future

用人话就是,主线程传给附属线程一个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