Files
another-boids-in-rust/vendor/ctrlc/examples/issue_46_example.rs

27 lines
653 B
Rust

use std::process;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::thread;
use std::time::Duration;
fn main() {
let running = Arc::new(AtomicUsize::new(0));
let r = running.clone();
ctrlc::set_handler(move || {
let prev = r.fetch_add(1, Ordering::SeqCst);
if prev == 0 {
println!("Exiting...");
} else {
process::exit(0);
}
})
.expect("Error setting Ctrl-C handler");
println!("Running...");
for _ in 1..6 {
thread::sleep(Duration::from_secs(5));
if running.load(Ordering::SeqCst) > 0 {
break;
}
}
}