今天給大家分享一個類似多線程任務的方法,具體如下:
std::shared_future<int> tmp = std::async(p1,p2,p3); int tmpInt = tmp.get();
1、std::future是一個非常有用也很有意思的東西,簡單說std::future提供了一種訪問異步操作結果的機制。
2、std::async代替線程的創建;
第一個參數是創建線程的策略(1、std::launch::async:在調用async就開始創建線程;2、std::launch::deferred:延遲加載方式創建線程。調用async時不創建線程,直到調用了future的get或者wait時才創建線程。)
第二個參數是線程函數
第三個參數是線程函數參數
3、get()就是用來獲取線程返回的結果
總結:
當你需要並發執行多個任務,但是還要按順序得到執行的結果,那么future的用途就來了,當你執行std::shared_future<int> tmp = std::async(std::launch::async,p2,p3);會立即創建線程去執行你的任務,然后在你需要的地方調用get()方法獲取返回值,如果沒有執行完,get()會等待,這樣你得到的返回值就是按順序得到的。
大家按照自己的業務去使用,有疑問可以留言。