shared_future 类
描述异步返回对象。 相较于 future 对象,异步提供程序 可与任意数量的 shared_future
对象关联。
语法
template <class Ty>
class shared_future;
备注
不要调用除以下项之外的任何方法:valid
、operator=
和为空的 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,指示返回的原因。
备注
只有当其异步提供程序存储了返回值或存储了异常时,关联的异步状态才会为准备就绪。