|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Getting the result | ||||
| State | ||||
shared_future::wait | ||||
void wait()const; | (since C++11) | |
Blocks until the result becomes available.valid()==true after the call.
The behavior is undefined ifvalid()==false before the call to this function.
Contents |
(none)
(none)
May throw implementation-defined exceptions.
The implementations are encouraged to detect the case whenvalid()==false before the call and throw astd::future_error with an error condition ofstd::future_errc::no_state.
Calling wait on the samestd::shared_future from multiple threads is not safe; the intended use is for each thread that waits on the same shared state to have a copy of astd::shared_future.
#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::shared_future<int> f1=std::async(std::launch::async,[](){return fib(40);});std::shared_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 secondsf1: 102334155f2: 433494437
| waits for the result, returns if it is not available for the specified timeout duration (public member function)[edit] | |
| waits for the result, returns if it is not available until specified time point has been reached (public member function)[edit] |