2 个不稳定版本
0.2.0 | 2020年1月10日 |
---|---|
0.1.0 | 2020年1月7日 |
#25 在 #green
用于 greenie
5KB
91 行
greenie
Rust 编程语言中的简单绿色线程。
特性
- 稳定 Rust 中的生成器!
- 同步原语:
Mutex
、Condvar
,其他将在以后实现(参见 TODO)。 - 快速。
- 使用
greenify
宏进行半自动调度,该宏在您的函数中插入 yield 点。
TODO
- 抢占式调度。
- 实现
RwLock
。 - 未来。
示例
Condvar 和 Mutex 示例
use greenie::channel::*;
use greenie::{greeny_main, Fiber};
#[greeny_main]
fn main() {
let chan_1 = Channel::<&'static str>::new(2);
let chan_2 = Channel::<&'static str>::new(2);
let fping = Fiber::new_capture(
|chan_1, chan_2| {
chan_1.send("ping");
println!("{}", chan_2.recv().unwrap());
chan_1.send("ping");
println!("{}", chan_2.recv().unwrap());
chan_1.send("ping");
println!("{}", chan_2.recv().unwrap());
},
(chan_1.clone(), chan_2.clone()),
);
let fpong = Fiber::new_capture(
|chan_1, chan_2| {
chan_2.send("pong");
println!("{}", chan_1.recv().unwrap());
chan_2.send("pong");
println!("{}", chan_1.recv().unwrap());
chan_2.send("pong");
println!("{}", chan_1.recv().unwrap());
},
(chan_1.clone(), chan_2.clone()),
);
fpong.start().unwrap();
fping.start().unwrap();
}
更多示例,请参阅 文档 或 examples/
依赖项
~1.5MB
~35K SLoC