3 个版本 (破坏性)
0.2.0 | 2021 年 10 月 26 日 |
---|---|
0.1.0 | 2021 年 10 月 19 日 |
0.0.1 | 2021 年 7 月 19 日 |
#831 in 并发
84KB
1.5K SLoC
gaffer
具有并发排除、作业合并、周期性作业和低优先级负载限制的优先级并行作业调度器。
作业调度器在其自己的线程或线程池上执行任务。此作业调度器特别设计用于考虑重量级或更昂贵的作业,这些作业可能具有副作用。在这种情况下,对作业进行优先级排序并将队列中的类似作业合并可能很有价值。
功能
- 周期性作业:将在某个间隔后重新入队的作业
- 作业队列:使用可克隆的
JobRunner
从各个线程发送作业 - 未来作业:(可选)创建
Future
从作业中获取结果 - 作业优先级:为作业提供优先级,并将所有作业按该顺序执行
- 作业合并:合并队列中的相同或类似作业以减少工作量
- 并行执行:在多个线程上运行作业,并锁定应单独运行的作业,它们保留在队列中,不占用其他资源
- 并发排除:基于键的锁定以避免不应并发运行的作业
- 优先级节流:为了有闲置的线程准备提取高优先级作业,通过限制低优先级作业的线程数量来节流低优先级作业
限制
- 一些测试非常依赖于时间,如果运行缓慢将会失败
用法
使用 cargo-edit
cargo add gaffer
或在 Cargo.toml
[dependencies]
gaffer = "0.2"
许可证
根据以下之一许可:
- Apache License,版本 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则你故意提交以包含在作品中的任何贡献,根据 Apache-2.0 许可证定义,应以上述方式双许可,不附加任何额外的条款或条件。
依赖项
~0.8–1.2MB
~20K SLoC