// ATTACK: a condvar timeout re-armed to poll shared dirty state.
fn wait_dirty(pair: &(std::sync::Mutex<bool>, std::sync::Condvar)) {
let (lock, condvar) = pair;
let mut dirty = lock.lock().unwrap();
loop {
let (guard, _timeout) = condvar
.wait_timeout(dirty, std::time::Duration::from_millis(50))
.unwrap();
dirty = guard;
if *dirty {
return;
}
}
}