std::shared_future<T>:: wait_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Getting the result | ||||
| State | ||||
|
shared_future::wait_until
|
|
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
所指定的时刻。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
等待结果变为可用
(公开成员函数) |
|
|
等待结果,若在指定的超时时间内结果不可用则返回
(公开成员函数) |