#调度 #线程 #亲和度 #亲和度级别 #优先级

无 std 程序+库 scrummage

争夺操作系统进程优先级

2 个版本

0.1.1 2020年7月27日
0.1.0 2020年7月26日

#658 in 并发

每月 31 次下载
用于 wallrnd

MIT OR Apache-2.0 OR Zlib

14KB
219

scrummage

控制进程的调度,使程序更响应!

scrummage::Process::current()
    .set_priority(scrummage::Priority::normal().lower().last().unwrap())
    .expect("couldn't set own thread priority");

路线图

  • Linux 支持
    • ...然后是 Unix,
    • 以及 MacOS?
  • Windows 支持
  • 线程优先级
    • 这目前是 thread-priority 的一部分
    • 并且更难做正确;我想保护用户免受优先级反转等问题的影响。

lib.rs:

操作系统进程调度 API 的薄层抽象。

通过向操作系统指示我们进程的优先级,我们可以更好地控制程序的资源使用情况,以及哪些任务会先完成。

例如,我们可以通过给它更高的优先级来配置我们的 UI,以抢占后台任务

let me = Process::current().priority().unwrap();
let boring_work = me.lower().next().expect("no lower priority available");
// It's fine if the `busy_child_process` has already finished
let _ = Process::from(&mut busy_child_process)
    .set_priority(boring_work);

这将告诉操作系统确保 me 总是获得它所需的全部资源,使它更快。

依赖关系

~42KB