Struct std::sync::WaitTimeoutResult 1.5.0[−][src]
pub struct WaitTimeoutResult(_);
Expand description
指示是否因超时而返回的条件变量的定时等待的类型。
它由 wait_timeout
方法返回。
Implementations
如果已知等待超时,则返回 true
。
Examples
本示例生成一个线程,该线程将更新布尔值,然后等待 100 毫秒再通知 condvar。
主线程将在 condvar 上等待超时,然后在布尔值已更新并通知后离开。
use std::sync::{Arc, Condvar, Mutex};
use std::thread;
use std::time::Duration;
let pair = Arc::new((Mutex::new(false), Condvar::new()));
let pair2 = Arc::clone(&pair);
thread::spawn(move || {
let (lock, cvar) = &*pair2;
// 让我们等待 20 毫秒,然后再通知 condvar。
thread::sleep(Duration::from_millis(20));
let mut started = lock.lock().unwrap();
// 我们更新布尔值。
*started = true;
cvar.notify_one();
});
// 等待线程启动。
let (lock, cvar) = &*pair;
let mut started = lock.lock().unwrap();
loop {
// 让我们在 condvar 的等待上设置超时。
let result = cvar.wait_timeout(started, Duration::from_millis(10)).unwrap();
// 10 毫秒已过去,或者值已更改!
started = result.0;
if *started == true {
// 我们已收到通知,并且值已更新,我们可以离开。
break
}
}
Run