44 个版本
0.16.1 | 2024年5月15日 |
---|---|
0.16.0 | 2024年1月12日 |
0.15.0 | 2023年9月16日 |
0.14.1 | 2022年7月14日 |
0.4.3 | 2017年6月21日 |
#92 in 并发
11,951 每月下载量
用于 124 个 crates (13 个直接使用)
160KB
3K SLoC
shred - Shared resource dispatcher
此库允许并行调度具有相互依赖性、共享和独占资源访问的系统。
用法
extern crate shred;
use shred::{DispatcherBuilder, Read, Resource, ResourceId, System, SystemData, World, Write};
#[derive(Debug, Default)]
struct ResA;
#[derive(Debug, Default)]
struct ResB;
#[derive(SystemData)] // Provided with `shred-derive` feature
struct Data<'a> {
a: Read<'a, ResA>,
b: Write<'a, ResB>,
}
struct EmptySystem;
impl<'a> System<'a> for EmptySystem {
type SystemData = Data<'a>;
fn run(&mut self, bundle: Data<'a>) {
println!("{:?}", &*bundle.a);
println!("{:?}", &*bundle.b);
}
}
fn main() {
let mut world = World::empty();
let mut dispatcher = DispatcherBuilder::new()
.with(EmptySystem, "empty", &[])
.build();
world.insert(ResA);
world.insert(ResB);
dispatcher.dispatch(&mut world);
}
请参阅 基准测试 以获得更大的(且有用的)示例。
所需 Rust 版本
1.56.1稳定版
特性
- 无锁
- 不使用通道或类似功能(-> 更低开销)
- 允许自动并行化和细粒度控制
贡献
欢迎贡献!如果您想要其他功能,只需创建一个 issue。如果您愿意,也可以帮助;只需选择一个“需要帮助”的 issue。如果您需要任何帮助,请随时提问!
所有贡献都假定在 MIT/Apache-2 下双许可。
许可证
shred
在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖项
~4MB
~75K SLoC