use std::thread;
#[inline(always)]
fn spin_hint() {
std::hint::spin_loop();
}
pub(crate) fn adaptive_wait<F>(cond: F)
where
F: Fn() -> bool,
{
for _ in 0..10 {
if cond() {
return;
}
spin_hint();
}
for _ in 0..20 {
if cond() {
return;
}
thread::yield_now();
}
while !cond() {
thread::park();
}
}