C++,std::shared_future的使用


今天給大家分享一個類似多線程任務的方法,具體如下:

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()會等待,這樣你得到的返回值就是按順序得到的。

 

大家按照自己的業務去使用,有疑問可以留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM