future

描述异步返回对象

语法

template <class Ty>
class future;

备注

每个标准异步提供程序返回一个对象,该对象的类型是此模板的实例化。 future 对象提供与其关联的异步提供程序的唯一访问权限。 如需多个与同一异步提供程序关联的异步返回对象,请将 future 对象复制到 shared_future 对象。

成员

公共构造函数

名称 描述
future 构造 future 对象。

公共方法

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

公共运算符

“属性” 描述
future::operator= 从指定的对象传输关联异步状态。

要求

标头<future>

命名空间std

构造函数

构造 future 对象。

future() noexcept;
future(future&& Other) noexcept;

参数

Other
future 对象。

注解

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

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

get

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

Ty get();

返回值

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

备注

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

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

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

在其他专用化中,此方法会从存储值移动其返回值。 因此,请仅调用此方法一次。

operator=

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

future& operator=(future&& Right) noexcept;

参数

Right
future 对象。

返回值

*this

注解

传输后,Right 不再具有关联异步状态。

share

将对象转换为 shared_future 对象。

shared_future<Ty> share();

返回值

shared_future(move(*this))

valid

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

bool valid() noexcept;

返回值

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

wait

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

void wait() const;

备注

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

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,指示返回的原因。

备注

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

wait_until

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

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

参数

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

返回值

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

备注

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

另请参阅

头文件引用
<future>