公共成员函数
<future>

std::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,以先到者为准。

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

如果 共享状态 包含一个 延迟函数(例如 async 返回的 future 对象),则该函数不会阻塞,而是立即返回 future_status::deferred 的值。

参数

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

返回值

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

数据竞争

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

异常安全

有效future 对象上调用此成员函数会产生 未定义行为(尽管库实现可能会检测到此行为并抛出带有 no_state 错误条件future_error,提供强保证)。

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

另见