在 GNU/Linux 机器上,如果想要执行“实时”(亚毫秒级时间关键)任务,您几乎总是必须经历冗长、复杂且容易出现问题的内核修补过程以提供足够的支持[ 1] [2]。
最大的问题是,许多实时任务最有用的系统甚至没有基本的硬件要求来允许这些补丁工作,即高分辨率定时器外围设备。或者如果他们这样做,它是特定于硬件的,因此需要根据具体情况在补丁中具体实施。即使 CPU/指令时钟速率足够快,可以提供所需的时间粒度,甚至更多,也是如此。
所以,我的问题是,有哪些最好的方法/技巧可以尽可能接近上述实时目标?可以简单地在应用程序源代码中完成的事情,无需深入了解底层硬件或过多的“内核黑客”。
提升进程优先级,为“关键”任务启动一个额外的线程,以及(在 C 中)使用 nanosleep() 的变体是迄今为止我想出的最好看的答案/技巧。我希望能找到更多。