示例一:future的成員函式與基本使用
member()函式後面會有定義與宣告,目前只是介紹future的使用
cout << "main thread id " << this_thread::get_id() << endl;
std::futureres = std::async(memberfun,1); // 建立乙個執行緒開始執行
cout << "continue ... " << endl;
//cout << res.get() << endl; // 卡在這裡等待threasio執行完
// res.wait();
std::future_status status = res.wait_for(std::chrono::seconds(6));
if (status == std::future_status::timeout) // 執行緒超時
else if (status == std::future_status::ready) // 成功返回
else if (status == std::future_status::deferred) // 執行緒延遲執行,
示例二:shared_future 使用範例 一
std::futureful = tpromise.get_future(); // 拿到上乙個執行緒的
//std::shared_futureresshare(std::move(ful));
//std::shared_futureresshare(ful.share()); // 兩種方式都可以
bool fulvalue = ful.valid(); // 判斷ful是否有有效值
std::shared_futurefulshare(ful.share());
fulvalue = ful.valid();
auto threadres = fulshare.get();
std::thread t1(prothread, std::ref(ful));// get()不能重複呼叫,在prothread()函式中有呼叫
t1.join();
示例三:shared_future 使用範例 二
std::shared_futureful(tpromise.get_future()); // 通過get_future返回值,構造乙個get_future物件
auto threadres = ful.get();
cout << "threadres " << threadres << endl;
cout << "end" << endl;
示例四:整體介紹
#include #include #include #include using namespace std;
int memberfun(int num)
void promisethread(std::promise&temp, int num)
void prothread(std::shared_future&temp)
int main()
《探索C 多執行緒》 future原始碼(二)
std promise promise物件可以儲存某一t型別的值,該值可以被future物件 可能在另乙個執行緒中 獲取,因此promise也提供了一種同步手段。在構造時,promise物件與乙個新的共享狀態 通常是std future 相關聯,他們可以儲存t型別的值或從std exception派...
C 11多執行緒 執行緒結果future
先用std async啟動乙個非同步任務,它返回乙個持有計算結果的std future,通過std future get即可阻塞執行緒,直到期值的狀態為ready並返回該結果 intf int main intf 函式必須非同步執行,即執行在不同的執行緒上 auto ft1 std async st...
c 11 多線執行緒 future
std promise 類介紹 promise 物件可以儲存某一型別 t 的值,該值可被 future 物件讀取 可能在另外乙個執行緒中 因此 promise 也提供了一種執行緒同步的手段。在 promise 物件構造時可以和乙個共享狀態 通常是std future 相關聯,並可以在相關聯的共享狀態...