rt/rust/examples/water/semaphore.rs

21 lines
357 B
Rust

use core::sync::atomic::{AtomicU32, Ordering};
rt::semaphore!(H2READY);
rt::semaphore!(HDONE);
static H: AtomicU32 = AtomicU32::new(0);
fn hydrogen() {
if (H.fetch_add(1, Ordering::Relaxed) & 1) == 1 {
H2READY.post();
}
HDONE.wait();
}
fn oxygen() {
H2READY.wait();
make_water();
HDONE.post_n(2);
}
include!("water.rs");