shared_future 类

描述异步返回对象。 相较于 future 对象,异步提供程序 可与任意数量的 shared_future 对象关联。

语法

template <class Ty>
class shared_future;

备注

不要调用除以下项之外的任何方法:validoperator= 和为空shared_future 对象上的析构函数。

shared_future 对象不同步。 从多个线程调用同一个对象上的方法,这会引发不可预知的结果。

成员

公共构造函数

名称 描述
shared_future 构造 shared_future 对象。

公共方法

名称 描述
get 检索存储在关联异步状态中的结果。
valid 指定对象是否不为空。
wait 阻止当前线程,直到关联异步状态为准备就绪。
wait_for 进行阻止,直到关联异步状态为准备就绪或已过指定时间。
wait_until 进行阻止,直到关联异步状态为准备就绪或直到指定时间点。

公共运算符

“属性” 描述
shared_future::operator= 分配新的关联异步状态。

要求

标头:<future>

命名空间: std

shared_future::get

检索存储在关联异步状态中的结果。

const Ty& get() const;

Ty& get() const;

void get() const;

注解

如果结果为异常,该方法将重新引发它。 否则,会返回结果。

在检索结果前,该方法会阻止当前线程,直到关联异步状态为准备就绪。

对于部分专用化 shared_future<Ty&>,存储值实际上是对已传递给异步提供程序作为返回值的对象的引用。

因为专用化 shared_future<void> 不存在任何存储值,所以此方法会返回 void

shared_future::operator=

指定对象传输关联异步状态

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

参数

Right
shared_future 对象。

返回值

*this

注解

对于第一个运算符,操作后 Right 不再具有关联异步状态。

对于第二个方法,Right 保留其关联异步状态。

shared_future::shared_future 构造函数

构造 shared_future 对象。

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

参数

Right
一个 future 或 一个 shared_future 对象。

注解

第一个构造函数构造没有关联异步状态shared_future 对象。

第二个和第三个构造函数构造 shared_future 对象并从 Right 传输关联异步状态。 Right 不再具有关联异步状态。

第四个构造函数构造与 shared_future 对象具有相同关联异步状态的 Right 对象。

shared_future::valid

指定对象是否具有关联异步状态

bool valid() noexcept;

返回值

如果对象有关联的异步状态,则为 true;否则为 false

shared_future::wait

阻止当前线程,直到关联异步状态为准备就绪

void wait() const;

备注

只有当其异步提供程序存储了返回值或存储了异常时,关联的异步状态才会为准备就绪。

shared_future::wait_for

阻止当前线程,直到关联异步状态为准备就绪或已过指定时间。

template <class Rep, class Period>
future_status wait_for(
    const chrono::duration<Rep, Period>& Rel_time) const;

参数

Rel_time
一个 chrono::duration 对象,指定线程阻止的最大时间间隔。

返回值

一个 future_status,指示返回的原因。

备注

只有当其异步提供程序存储了返回值或存储了异常时,关联的异步状态才会为准备就绪

shared_future::wait_until

阻止当前线程,直到关联的异步状态为准备就绪或直到指定时间点后。

template <class Clock, class Duration>
future_status wait_until(
    const chrono::time_point<Clock, Duration>& Abs_time) const;

参数

Abs_time
一个 chrono::time_point 对象,指定在其后可取消阻止线程的时间。

返回值

一个 future_status,指示返回的原因。

备注

只有当其异步提供程序存储了返回值或存储了异常时,关联的异步状态才会为准备就绪。

另请参阅

头文件引用
<future>