C++,std::shared_future的使用

徐沛東發表於2018-10-25

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

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

 

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

相關文章