На одну ссылку в std::shared_future<T>::valid
В отличие от std :: future, общее состояние std :: shared_future не аннулируется при вызове get ().
Что имеет смысл. Если бы это было не так, то вы не могли бы, чтобы несколько потоков могли вызывать get
. Мы можем дополнительно поддержать это, посмотрев на стандарт. В [futures.unique.future] / 15 они явно заявляют, что get
работает только один раз с
освобождает любое общее состояние ([futures.state]).
в то время как в [futures.shared.future] / 18 он не утверждает ничего подобного, поэтому состояние остается в силе даже после вызова get
.
boost::shared_future
имеет такое же поведение. На ссылка get
не имеет текста, заявляющего, что делает недействительным общее состояние при вызове на get
, поэтому вы можете вызывать его несколько раз.