# std::future<T>::wait

< cpp‎ | thread‎ | future

void wait() const; |  | (C++11 起)

阻塞直至结果变得可用。调用后 valid() == true 。

若调用此函数前 `valid`() == false 则行为未定义。

### 参数

（无）

### 返回值

（无）

### 异常

可能抛出实现定义的异常。

### 注解

鼓励实现检测调用前 valid() == false 的情况并抛出以 std::future_errc::no_state 为 error_condition 的 std::future_error 。

### 示例

    #include <chrono>
    #include <iostream>
    #include <future>
    #include <thread>

    int fib(int n)
    {
      if (n < 3) return 1;
      else return fib(n-1) + fib(n-2);
    }

    int main()
    {
        std::future<int> f1 = std::async(std::launch::async, [](){
            return fib(40);
        });
        std::future<int> f2 = std::async(std::launch::async, [](){
            return fib(43);
        });

        std::cout << "waiting... " << std::flush;
        const auto start = std::chrono::system_clock::now();

        f1.wait();
        f2.wait();

        const auto diff = std::chrono::system_clock::now() - start;
        std::cout << std::chrono::duration<double>(diff).count() << " seconds\n";

        std::cout << "f1: " << f1.get() << '\n';
        std::cout << "f2: " << f2.get() << '\n';
    }

可能的输出：

    waiting... 1.61803 seconds
    f1: 102334155
    f2: 433494437

### 参阅

wait_for | 等待结果，如果在指定的超时间隔后仍然无法得到结果，则返回。 (公开成员函数)
wait_until | 等待结果，如果在已经到达指定的时间点时仍然无法得到结果，则返回。 (公开成员函数)