21 lines
357 B
Rust
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");
|