std::future<T>::wait
来自cppreference.com
<tbody>
</tbody>
void wait() const; |
(C++11 起) | |
阻塞直至结果变得可用。调用后 valid() == true。
若调用此函数前 valid() == false 则行为未定义。
参数
(无)
返回值
(无)
异常
可能会抛出由实现定义的异常。
注解
鼓励实现检测调用前 valid() == false 的情况并抛出以 std::future_errc::no_state 为错误条件的 std::future_error。
示例
运行此代码
#include <chrono>
#include <future>
#include <iostream>
#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 << "等待... " << 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() << " 秒\n";
std::cout << "f1: " << f1.get() << '\n';
std::cout << "f2: " << f2.get() << '\n';
}
可能的输出:
等待... 1.61803 秒
f1: 102334155
f2: 433494437
参阅
| 等待结果,如果在指定的超时间隔后仍然无法得到结果,则返回。 (公开成员函数) | |
| 等待结果,如果在已经到达指定的时间点时仍然无法得到结果,则返回。 (公开成员函数) |