C++ 庫 - <future>



C++ 中的<future> 標頭檔案提供了一種處理非同步操作的方法,允許任務併發執行並在稍後獲取結果。此庫是更廣泛的併發庫的一部分,它使多執行緒程式設計變得更容易。

它通常與 std::async 結合使用,std::async 非同步執行函式,或與 std::promise 結合使用,std::promise 手動設定 future 物件的值。當值準備好後,可以使用 future 物件的 get() 函式訪問它。下面列出了常用的 C++ <future> 複製函式及其描述。

包含 <future> 標頭檔案

要在您的 C++ 程式中包含 <future> 標頭檔案,可以使用以下語法。

#include <future>

<future> 標頭檔案的函式

以下是 <future> 標頭檔案中所有函式的列表。

序號 函式及描述
1 operator=

它分配共享狀態。

2 get_future

它返回與結果關聯的 future。

3 set_value

它將結果設定為特定值。

4 set_exception

它將結果設定為指示異常。

5 set_value_at_thread_exit

它將結果設定為特定值,同時僅線上程退出時傳遞通知。

6 swap

它交換兩個物件。

7 valid

它檢查共享狀態是否有效。

8 operator()

它呼叫儲存的任務。

9 wait

它等待結果可用。

等待 Future 就緒

在以下示例中,我們將使用 wait() 阻塞主執行緒,直到非同步操作完成。

#include <iostream>
#include <future>
#include <thread>
int a(int x, int y) {
   std::this_thread::sleep_for(std::chrono::seconds(2));
   return x + y;
}
int main() {
   std::future < int > b = std::async (std::launch::async, a, 2, 1);
   b.wait();
   std::cout << "Result : " << b.get() << std::endl;
   return 0;
}

輸出

以下是上述程式碼的輸出 -

Result : 3
廣告