今天給大家分享一個類似多執行緒任務的方法,具體如下:
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()會等待,這樣你得到的返回值就是按順序得到的。
大家按照自己的業務去使用,有疑問可以留言。