std::future<T>::wait
来自cppreference.com
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)return1;elsereturn 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;constauto start =std::chrono::system_clock::now(); f1.wait(); f2.wait(); constauto 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
[编辑]参阅
等待结果,如果在指定的超时间隔后仍然无法得到结果,则返回。 (公开成员函数) | |
等待结果,如果在已经到达指定的时间点时仍然无法得到结果,则返回。 (公开成员函数) |