A thin wrapper around std::sync::CondVar and Mutex that enhances readability when synchronizing threads.
Add cond_sync to the dependencies in your project's Cargo.toml:
[dependencies]
cond_sync = "0.2"use cond_sync::{CondSync, Other};
let cond_sync = CondSync::new(0_usize);
for i in 0..5 {
let cond_sync_t = cond_sync.clone();
std::thread::spawn(move || {
// ...initialize...
cond_sync_t.modify_and_notify(|v| *v += 1, Other::One).unwrap();
// ...do real work...
});
}
// wait until all threads are initialized
cond_sync.wait_until(|v| *v == 5).unwrap();
// ...No dependencies.
See the change log for more details.