std::shared_future<T>::wait - cppreference.com

From cppreference.com

voidwait()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.

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

std::future_error

with an error condition of

std::future_errc::no_state

.

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)

[edit]

waits for the result, returns if it is not available until specified time point has been reached
(public member function)

[edit]