公有成员函数
<future>

std::shared_future::wait_until

template <class Clock, class Duration>  future_status wait_until (const chrono::time_point<Clock,Duration>& abs_time) const;
等待共享状态就绪
最多等待到 abs_time,直到 abs_time 为止。

如果 共享状态 尚未 就绪(即,提供者尚未设置其值或异常),则该函数将阻塞调用线程,并等待直到其 就绪 或直到 abs_time,以先到者为准。

当函数因其 共享状态 变为 就绪 而返回时, 共享状态 上设置的值或异常不会被读取,但在提供者使 共享状态 就绪的点与此函数的返回之间,所有可见的副作用都已同步。

如果 共享状态 包含 延迟函数,则该函数不阻塞,并立即以 future_status::deferred 的值返回。

参数

abs_time
函数将被强制返回的时间点,恢复调用线程的执行。
请注意,多线程管理操作可能会导致超过此时间的延迟。
time_point 是表示特定绝对时间的对象。

返回值

一个 future_status 类型的值,指示导致函数返回的原因
描述
future_status::ready共享状态 已就绪:生产者已设置值或异常。
future_status::timeout函数等待到 abs_time,而 共享状态 未就绪。
future_status::deferred共享状态 包含 延迟函数

数据竞争

shared_future 对象被访问。
共享状态 作为 原子操作 被访问(不会导致数据竞争)。

异常安全

shared_future 对象调用此成员函数,而该对象 无效,将产生 未定义行为(尽管库实现可能会检测到这一点并抛出 future_error,其 no_state 错误条件,提供强保证)。

如果与 abs_time 相关的操作抛出异常,则此函数可能抛出异常(请注意,在 <chrono> 中提供的标准 时钟持续时间 类型上的操作永远不会抛出)。

另见