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
,指示返回的原因。
备注
只有当其异步提供程序存储了返回值或存储了异常时,关联的异步状态才会为准备就绪。