#clock #reactor #control #interval #scheduling #scheduler #error

clockctrl

为反应器提供各种时钟步进的非阻塞框架

1个不稳定版本

0.1.0 2020年1月30日

#24 in #reactor

GPL-3.0-or-later

11KB
125 代码行数(不含注释)

内部计划任务运行器时钟控制机制

这个库最初是为Ratman和libqaul编写的工具库,但也可以在任何需要直接调度控制的反应器设置中使用,而不必暴露所有任务。

示例:Ratman

默认情况下,Ratman内部每个独立任务都以硬件允许的速度运行,即轮询任务在轮询循环之间不会等待。这通常很好,在非电池或CPU受限的系统上。然而,在电池或CPU受限的系统上,这可能导致巨大的电池耗尽。这就是ClockCtrl发挥作用的地方,这是一个可以配置为各种类型的时钟接收器,可以操作Ratman内部运行的任务的运行时行为。

use clockctrl::{ClockCtrl, Error, Interval, Scheduler};
use std::time::Duration;

let mut clc = ClockCtrl::new();
clc.setup(MyTasks::Journal)
    .set(Interval::Timed(Duration::from_secs(10)));

clc.setup(MyTasks::Switch)
    .set(Interval::Stepped)
    .fence(move |_| {
        // ...
    });

依赖关系

~5–13MB
~166K SLoC