15次发布
0.7.0 | 2024年1月12日 |
---|---|
0.6.3 | 2020年12月21日 |
0.6.2 | 2020年2月11日 |
0.6.1 | 2019年6月23日 |
0.3.0 | 2017年6月5日 |
#215 in #systems
6,369 monthly downloads
在 97 个crate中使用 (7 直接使用)
7KB
114 行
shred - 共享资源 分发器
这个库允许并行调度系统,这些系统可能具有相互依赖性,共享和独占资源访问。
用法
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稳定版
特性
- 无锁
- 不使用通道或其他类似功能(=> 更少的开销)
- 允许自动并行化和精细控制
贡献
欢迎贡献!如果您想要其他功能,只需创建一个问题。如果您想帮忙,也可以;只需选择一个“帮助所需”的问题。如果您需要任何帮助,请随时提问!
所有贡献均假设为MIT/Apache-2双重许可。
许可
shred
在MIT许可和Apache许可(版本2.0)的条款下分发。
请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖关系
~1.5MB
~35K SLoC