2 个版本
0.0.5 | 2024年5月15日 |
---|---|
0.0.3 | 2023年5月4日 |
#206 在 并发
每月 95 次下载
185KB
3.5K SLoC
taski
待办事项
-
允许用户指定自定义颜色
-
也支持动态参数
-
添加竞争对手库的示例
-
添加 embedme
-
添加文档
-
添加另一个示例
-
使用 plotters 改进布局库
-
不:添加调度器的构建器
-
不:添加调度特质
-
完成:为不同的策略添加更多测试:fifo、优先级、自定义
-
完成:使用日志记录
-
完成:移除 trace 锁?不应该需要
-
完成:添加对异步闭包/函数的支持
-
完成:使用 petgraph 进行图表示
设计决策
- 任务节点是内部的,因为这是状态保持的地方(内部可变性)以及分配唯一索引的地方
- 用户不能从外部构建
- 只能使用
add_task
来创建 - 只有作为依赖项的有效输入(我们知道它已被添加(否则我们不知道)),并且我们知道它不能有循环
- 用户不能在上面运行任何方法?错误是因为任务特质
- 使用结果类型,以允许快速失败策略
- 用户解决方案:使用 infallible 并传播 Option
- 将输出克隆为输入,这对于像 i32 这样的小型数据更有效
- 对于大型数据(或无法克隆的数据),只需返回一个 Arc
开发
cargo install cargo-expand
cargo expand ::task
存在许多不同的任务调度器实现,本实现的目的是以下
- 支持异步任务
- 支持有向无环图和循环检测
- 允许基于自定义 ID 类型的自定义调度策略,可以通过标签强制执行复杂约束
- 允许在调度器执行时并发添加任务,以便可以将任务流式传输到调度器
依赖项
~2.8–6.5MB
~112K SLoC