public member function
<future>

std::shared_future::get

generic template (1)
const T& get() const;
reference specialization (2)
R& shared_future<R&>::get() const;     // when T is a reference type (R&)
void specialization (3)
void shared_future<void>::get() const; // when T is void
获取值
当*共享状态*就绪时,返回对存储在*共享状态*中的值(或其异常)的引用。

如果*共享状态*尚未就绪(即提供者尚未设置其值或异常),则函数会阻塞调用线程,并等待其就绪。

一旦*共享状态*就绪,函数将解除阻塞并返回(或抛出),但不会释放其*共享状态*(与future::get不同),允许其他shared_future对象也访问存储的值(或同一对象的新访问)。

所有可见的副作用都在提供者使*共享状态*就绪的那一点和此函数返回之间同步,但请注意,在多个对象因同一事件等待*共享状态*的情况下,这些对象之间不存在同步。

void特化(3)的成员不返回值,但仍然等待*共享状态*就绪后才返回/抛出。

参数



返回值

对其由提供者存储在*共享状态*中的值的引用。
引用的值的生命周期至少延长到与*共享状态*关联的最后一个对象释放它或被销毁为止。
T是*共享状态*中值的类型(即shared_future的模板参数)。

数据竞争

shared_future 对象被访问。
相对于提供者的前一个修改操作,*共享状态*被视为原子操作进行访问,但相对于来自shared_future对象的多个访问则不是。

异常安全

调用此成员函数会抛出由提供者将其设置为异常而就绪的*共享状态*中存储的异常。请注意,在这种情况下,提供的是*强保证*,shared_future对象保持不变。

对非*有效*的shared_future对象调用此成员函数,会产生*未定义行为*(尽管库实现可能会检测到这一点并抛出带有*no_state*错误条件的future_error)。

另见