use std::sync::mpsc::channel;
use std::sync::Arc;
use std::thread;
use mcslock::barging::spins::backoff::Mutex;
fn main() {
const N: usize = 10;
let data = Arc::new(Mutex::new(0));
let (tx, rx) = channel();
for _ in 0..N {
let (data, tx) = (data.clone(), tx.clone());
thread::spawn(move || {
let mut data = data.lock();
*data += 1;
if *data == N {
tx.send(()).unwrap();
}
});
}
let _message = rx.recv();
let count = data.lock();
assert_eq!(*count, N);
}