1use std::sync::Arc;
4
5use parking_lot::{Condvar, Mutex};
6
7
8#[derive(Debug, Default)]
9struct ReadWrite {
10 term: bool
11}
12
13#[derive(Debug, Default)]
14struct Shared {
15 rw: Mutex<ReadWrite>,
16 signal: Condvar
17}
18
19fn main() {
20 let _ = simple_sigh::init();
24
25 let sh = Shared::default();
29 let sh = Arc::new(sh);
30
31 let sh2 = Arc::clone(&sh);
35 #[allow(clippy::significant_drop_tightening)]
36 simple_sigh::register(move |_| {
37 println!("Received signal");
38 let mut g = sh2.rw.lock();
39 g.term = true;
40 sh2.signal.notify_one();
41 })
42 .unwrap();
43
44 println!("Wait for interrupt/termination signal..");
48 let mut g = sh.rw.lock();
49 while !g.term {
50 sh.signal.wait(&mut g);
51 }
52 println!("Bye!");
53}
54
55