use atomx::signal;
#[derive(Default)]
struct Dummy { id: usize }
impl Clone for Dummy {
fn clone(&self) -> Self {
panic!("clone");
}
}
fn main() {
let (mut source, sink) = signal::sync::create::<Dummy>();
source.modify(&mut |dummy| {dummy.id = 1});
let t1 = std::thread::spawn(move || {
let mut stop = false;
while ! stop {
sink.process(&mut |dummy|{
if dummy.id > 1000 {
stop = true
}
});
}
});
let t2 = std::thread::spawn(move || {
loop {
let state = source.modify(&mut |dummy| {
if dummy.id % 100 == 0 { println!("\nsrc dummy.id: {}", dummy.id) }
else { print!(".") }
dummy.id += 2;
});
use signal::sync::State::*;
match state {
AllGone => break,
Receiving => (),
Ready => ()
}
}
});
t1.join().expect("Couldn't join on the associated thread 1");
t2.join().expect("Couldn't join on the associated thread 2");
}