6 个版本
0.0.6 | 2024 年 4 月 8 日 |
---|---|
0.0.5 | 2024 年 4 月 5 日 |
0.0.4 | 2023 年 12 月 15 日 |
0.0.3 | 2023 年 11 月 21 日 |
#207 在 并发
每月 296 次下载
66KB
879 行
employees
一个轻量级 crate,用于隐藏设置线程的大部分负担。
哲学
这个 crate 将线程视为名为 workers
的独特实体,它们随着程序的生命周期而存在。
人们可能会注意到与 async tasks
有很多相似之处,但有一个主要区别。虽然 tasks
被设计成短的非阻塞并发代码块,在异步运行时中运行,但另一方面,workers
则完全相反
- 它们在自己的操作系统线程上运行。
- 它们被设计为运行很长时间(通常是程序的生命周期)。
- 它们可以阻塞操作,只要它们(主要是)想要,而不会影响其他
workers
。
与完整的实体组件系统(ECS)和这个 crate 之间存在一些相似之处。在某些方面,这个 crate 可以被视为没有 C 部分的 ECS。
使用方法
以下是一个小型示例,它创建了一个每 100 毫秒打印 "Hello, World!" 一秒钟的 worker。
struct WorkerThatPrints;
impl Worker for WorkerThatPrints {
fn on_update(&mut self) -> ControlFlow {
println!("Hello, World!");
std::thread::sleep(Duration::from_millis(100));
ControlFlow::Continue
}
}
let mut runtime = Runtime::new();
runtime.launch(WorkerThatPrints);
std::thread::sleep(Duration::from_secs(1));
有关更详细的信息,请参阅 完整文档。
许可证
根据 MIT 许可证许可。有关详细信息,请参阅 LICENSE。
依赖关系
~0.2–7MB
~37K SLoC