Namespaces
Variants

std::shared_future<T>:: wait_until

From cppreference.net

Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
template < class Clock, class Duration >
std:: future_status wait_until ( const std:: chrono :: time_point < Clock,Duration > & timeout_time ) const ;
(C++11 起)

wait_until 等待结果变为可用状态。它会阻塞直到达到指定的 timeout_time 或结果变为可用(以先发生者为准)。返回值指示 wait_until 返回的原因。

如果该 future 是调用采用惰性求值的 async 所返回的结果,则此函数会立即返回而不会等待。

如果在调用此函数前 valid() false ,或 Clock 不满足 Clock 要求,则行为未定义。 std:: chrono :: is_clock_v < Clock > false ,则程序非良构。 (C++20 起)

目录

参数

timeout_time - 阻塞等待的最晚时间点

返回值

常量 说明
future_status::deferred 共享状态包含使用延迟求值的延迟函数,因此结果仅在显式请求时计算
future_status::ready 结果已就绪
future_status::timeout 超时已过期

异常

任何在时钟、时间点或持续时间执行期间抛出的异常(标准库提供的时钟、时间点和持续时间从不抛出异常)。

注解

鼓励实现检测在调用前 valid ( ) == false 的情况,并抛出带有错误条件 future_errc::no_state std::future_error

标准建议使用与 timeout_time 关联的时钟来测量时间;该时钟不要求是单调时钟。如果时钟出现不连续调整,此函数的行为不做任何保证,但现有实现会将 timeout_time Clock 转换为 std::chrono::system_clock 并委托给POSIX pthread_cond_timedwait ,因此等待过程会遵循系统时钟的调整,但不会遵循用户提供的 Clock 的调整。在任何情况下,由于调度或资源竞争延迟,该函数的实际等待时间可能超过 timeout_time 所指定的时刻。


示例

参见

等待结果变为可用
(公开成员函数)
等待结果,若在指定的超时时间内结果不可用则返回
(公开成员函数)