#作业调度器 #作业 #作业 #调度器 #优先级 #作业队列

gaffer

具有并发排除、作业合并、周期性作业和低优先级负载限制的优先级并行作业调度器

3 个版本 (破坏性)

0.2.0 2021 年 10 月 26 日
0.1.0 2021 年 10 月 19 日
0.0.1 2021 年 7 月 19 日

#831 in 并发

MIT/Apache

84KB
1.5K SLoC

gaffer

具有并发排除、作业合并、周期性作业和低优先级负载限制的优先级并行作业调度器。

作业调度器在其自己的线程或线程池上执行任务。此作业调度器特别设计用于考虑重量级或更昂贵的作业,这些作业可能具有副作用。在这种情况下,对作业进行优先级排序并将队列中的类似作业合并可能很有价值。

功能

  • 周期性作业:将在某个间隔后重新入队的作业
  • 作业队列:使用可克隆的 JobRunner 从各个线程发送作业
  • 未来作业:(可选)创建 Future 从作业中获取结果
  • 作业优先级:为作业提供优先级,并将所有作业按该顺序执行
  • 作业合并:合并队列中的相同或类似作业以减少工作量
  • 并行执行:在多个线程上运行作业,并锁定应单独运行的作业,它们保留在队列中,不占用其他资源
  • 并发排除:基于键的锁定以避免不应并发运行的作业
  • 优先级节流:为了有闲置的线程准备提取高优先级作业,通过限制低优先级作业的线程数量来节流低优先级作业

限制

  • 一些测试非常依赖于时间,如果运行缓慢将会失败

用法

使用 cargo-edit

cargo add gaffer

或在 Cargo.toml

[dependencies]
gaffer = "0.2"

许可证

根据以下之一许可:

任选其一。

贡献

除非你明确声明,否则你故意提交以包含在作品中的任何贡献,根据 Apache-2.0 许可证定义,应以上述方式双许可,不附加任何额外的条款或条件。

依赖项

~0.8–1.2MB
~20K SLoC