use sigterm::Broadcast;
use std::time::Duration;
use tokio::time::sleep;
#[tokio::main]
async fn main() {
let broadcast = Broadcast::new();
for i in 1..=3 {
let sub = broadcast.subscribe();
tokio::spawn(async move {
println!("Worker {} started...", i);
sub.recv().await;
println!("Worker {} shutting down!", i);
});
}
sleep(Duration::from_secs(2)).await;
println!("Triggering global shutdown...");
broadcast.shutdown();
sleep(Duration::from_millis(100)).await;
println!("Main exited.");
}