Simple green threads in Rust programming language.
Mutex
,Condvar
others will be implemented later ( see TODO ).greenify
macro that inserts yield points in your functions.RwLock
.Condvar and Mutex example: ```rust use greenie::channel::*;
use greenie::{greeny_main, Fiber};
fn main() { let chan1 = Channel::<&'static str>::new(2); let chan2 = Channel::<&'static str>::new(2);
let fping = Fiber::new_capture(
|chan_1, chan_2| {
chan_1.push("ping");
println!("{}", chan_2.pop().unwrap());
chan_1.push("ping");
println!("{}", chan_2.pop().unwrap());
chan_1.push("ping");
println!("{}", chan_2.pop().unwrap());
},
(chan_1.clone(), chan_2.clone()),
);
let fpong = Fiber::new_capture(
|chan_1, chan_2| {
chan_2.push("pong");
println!("{}", chan_1.pop().unwrap());
chan_2.push("pong");
println!("{}", chan_1.pop().unwrap());
chan_2.push("pong");
println!("{}", chan_1.pop().unwrap());
},
(chan_1.clone(), chan_2.clone()),
);
fpong.start().unwrap();
fping.start().unwrap();
}
``
For more examples read [documentation](https://docs.rs/greenie/) or
examples/`