From cppreference.com
voidwait()const;(since C++11)Blocks until the result becomes available. valid()==true after the call.
The behavior is undefined if
()==false before the call to this function.
Parameters
(none)
Return value
(none)
Exceptions
May throw implementation-defined exceptions.
Notes
The implementations are encouraged to detect the case when valid()==false before the call and throw a
with an error condition of
.
Calling wait on the same std::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 a std::shared_future.
Example
Run this code
#include<chrono>#include<future>#include<iostream>#include<thread>intfib(intn){if(n<3)return1;elsereturnfib(n-1)+fib(n-2);}intmain(){std::shared_future<int>f1=std::async(std::launch::async,[](){returnfib(40);});std::shared_future<int>f2=std::async(std::launch::async,[](){returnfib(43);});std::cout<<"waiting... "<<std::flush;constautostart=std::chrono::system_clock::now();f1.wait();f2.wait();constautodiff=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 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)