std::future 是一個 C++11 引入的標準庫類,可用于異步獲取計算結果,通常情況下,std::future 可以通過 get() 函式來等待異步操作完成,并獲取其結果, 如果需要等待多個異步操作完成并獲取它們各自的結果,可以使用 std::future 的姊妹類 std::shared_future 來實作, std::shared_future 與 std::future 類似,不同之處在于它可以被多個執行緒同時訪問和等待,因此,可以將多個 std::shared_future 物件保存到一個容器中,然后使用 std::shared_future 的成員函式 wait() 或 get() 等待這些異步操作完成,并獲取它們的結果, 例如,假設有兩個異步任務 task1 和 task2,它們分別回傳型別為 T1 和 T2 的結果,可以使用以下代碼來創建 std::shared_future 并保存到一個 vector 容器中:
查看代碼
std::promise<T1> promise1;
std::future<T1> future1 = promise1.get_future();
std::shared_future<T1> shared_future1 = future1.share();
std::promise<T2> promise2;
std::future<T2> future2 = promise2.get_future();
std::shared_future<T2> shared_future2 = future2.share();
std::vectorstd::shared_future<void> futures;
futures.push_back(shared_future1);
futures.push_back(shared_future2);
接下來,可以使用 std::shared_future 的成員函式 wait() 或 get() 等待這些異步操作完成,并獲取它們的結果,例如:
for (const auto& f : futures) {
f.wait();
}
T1 result1 = future1.get();
T2 result2 = future2.get();
在上面的代碼中,wait() 函式等待所有異步操作完成,而 get() 函式分別獲取每個異步任務的結果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/556102.html
標籤:其他
上一篇:行程間通信總結
下一篇:返回列表
