use std::{
sync::{
atomic::{AtomicUsize, Ordering},
Arc,
},
thread::{sleep, spawn},
time::Duration,
};
use wg::WaitGroup;
fn main() {
let wg = WaitGroup::new();
let ctr = Arc::new(AtomicUsize::new(0));
for _ in 0..5 {
let ctrx = ctr.clone();
let t_wg = wg.add(1);
spawn(move || {
sleep(Duration::from_millis(50));
ctrx.fetch_add(1, Ordering::Relaxed);
t_wg.done();
});
}
wg.wait();
assert_eq!(ctr.load(Ordering::Relaxed), 5);
}