std::future<T>::wait
From cppreference.com
void wait()const; | (since C++11) | |
Blocks until the result becomes available. valid()==true after the call.
The behavior is undefined if valid
()==false before the call to this function.
Contents |
[edit]Parameters
(none)
[edit]Return value
(none)
[edit]Exceptions
May throw implementation-defined exceptions.
[edit]Notes
The implementations are encouraged to detect the case when valid()==false before the call and throw a std::future_error with an error condition of std::future_errc::no_state.
[edit]Example
Run this code
#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<<"waiting... "<<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()<<" seconds\n"; std::cout<<"f1: "<< f1.get()<<'\n';std::cout<<"f2: "<< f2.get()<<'\n';}
Possible output:
waiting... 1.61803 seconds f1: 102334155 f2: 433494437
[edit]See also
waits for the result, returns if it is not available for the specified timeout duration (public member function) | |
waits for the result, returns if it is not available until specified time point has been reached (public member function) |