use std::sync::Arc;
use parking_lot::{Condvar, Mutex};
#[derive(Debug, Default)]
struct ReadWrite {
term: bool
}
#[derive(Debug, Default)]
struct Shared {
rw: Mutex<ReadWrite>,
signal: Condvar
}
fn main() {
let _ = simple_sigh::init();
let sh = Shared::default();
let sh = Arc::new(sh);
let sh2 = Arc::clone(&sh);
#[allow(clippy::significant_drop_tightening)]
simple_sigh::register(move |_| {
println!("Received signal");
let mut g = sh2.rw.lock();
g.term = true;
sh2.signal.notify_one();
})
.unwrap();
println!("Wait for interrupt/termination signal..");
let mut g = sh.rw.lock();
while !g.term {
sh.signal.wait(&mut g);
}
println!("Bye!");
}