WaitTimeoutResult in std::sync - Rust (original) (raw)
Struct WaitTimeoutResult
1.0.0 · Source
pub struct WaitTimeoutResult(/* private fields */);
Expand description
A type indicating whether a timed wait on a condition variable returned due to a time out or not.
It is returned by the wait_timeout method.
1.5.0 · Source
Returns true
if the wait was known to have timed out.
§Examples
This example spawns a thread which will sleep 20 milliseconds before updating a boolean value and then notifying the condvar.
The main thread will wait with a 10 millisecond timeout on the condvar and will leave the loop upon timeout.
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;
// Let's wait 20 milliseconds before notifying the condvar.
thread::sleep(Duration::from_millis(20));
let mut started = lock.lock().unwrap();
// We update the boolean value.
*started = true;
cvar.notify_one();
});
// Wait for the thread to start up.
let (lock, cvar) = &*pair;
loop {
// Let's put a timeout on the condvar's wait.
let result = cvar.wait_timeout(lock.lock().unwrap(), Duration::from_millis(10)).unwrap();
// 10 milliseconds have passed.
if result.1.timed_out() {
// timed out now and we can leave.
break
}
}
Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.