public member function
<future>

std::future::wait

void wait() const;
等待就緒
等待*共享狀態*變為*就緒*。

如果*共享狀態*尚未就緒(即提供者尚未設定其值或異常),則函式會阻塞呼叫執行緒,並等待其就緒。

一旦*共享狀態*變為*就緒*,函式將解除阻塞並返回,而不讀取其值,也不丟擲其設定的異常(如果有)。

所有可見的副作用將在提供者使*共享狀態*就緒與此函式返回之間進行同步。

引數



返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// future::wait
#include <iostream>       // std::cout
#include <future>         // std::async, std::future
#include <chrono>         // std::chrono::milliseconds

// a non-optimized way of checking for prime numbers:
bool is_prime (int x) {
  for (int i=2; i<x; ++i) if (x%i==0) return false;
  return true;
}

int main ()
{
  // call function asynchronously:
  std::future<bool> fut = std::async (is_prime,194232491); 

  std::cout << "checking...\n";
  fut.wait();

  std::cout << "\n194232491 ";
  if (fut.get())      // guaranteed to be ready (and not block) after wait returns
    std::cout << "is prime.\n";
  else
    std::cout << "is not prime.\n";

  return 0;
}

輸出

checking...
194232491 is prime.


資料競爭

訪問了 future 物件。
共享狀態 作為 原子操作 被訪問(不會導致資料競爭)。

異常安全

在一個*無效*的<a href="/future">future</a>物件上呼叫此成員函式,會產生*未定義行為*(儘管庫實現可能會檢測到這一點並丟擲具有<a href="/future_errc">no_state</a>*錯誤條件的*<a href="/future_error">future_error</a>)。

另見