A std::future
has a std::future::valid
method, which indicates whether the future object refers to some shared state. None of the constructors construct a future object that refers to shared state (except the move constructor, which can move the shared state from one future object to another). All the methods of the class (get
, wait
, wait_for
and wait_until
require the future object to have shared state as a precondition (they have undefined behaviour if valid() == false
). How then can a std::future
acquire some shared state and become useful?
You do not normally use a std::future
in isolation; you use it with a std::promise
. The std::promise
constructors set up some shared state. You can then use the std::promise::get_future()
method to get a std::future
that refers to that shared state.
来源:https://stackoverflow.com/questions/50020793/what-gives-a-stdfuture-some-shared-state