无条件 (1) | template <class Clock, class Duration> cv_status wait_until (unique_lock<mutex>& lck, const chrono::time_point<Clock,Duration>& abs_time); |
---|---|
谓词 (2) | template <class Clock, class Duration, class Predicate> bool wait_until (unique_lock<mutex>& lck, const chrono::time_point<Clock,Duration>& abs_time, Predicate pred); |
lck.unlock()
,允许其他已锁定的线程继续执行。lck.lock()
,使 lck 保持在调用函数时的状态。然后函数返回(请注意,此最后的互斥量锁定可能会在返回前再次阻塞该线程)。false
时,该函数才会阻塞,并且只有在 pred 变为 true
时通知才能解除线程阻塞(这对于防止虚假唤醒尤其有用)。其行为如同实现为:
|
|
lck.mutex()
返回)。bool
的值。true
。pred()
,而不管超时是否被触发(尽管它只有在被触发时才能为 false
)。condition_variable
对象和参数都处于有效状态(基本保证)。lck.lock()
)。<chrono>
中提供的标准 时钟 和 持续时间 类型上的操作永远不会抛出)。