如何在 Linux 中使用 C++ 在毫秒间隔(例如,每 20 毫秒)内非常准确地调用函数

How to invoke a function very accurately in milli seconds gaps (e.g, every 20ms) using C++ in Linux

提问人:Prasanth 提问时间:11/11/2023 更新时间:11/11/2023 访问量:63

问:

我知道以下方法,如睡眠、带超时的条件等待可用于延迟特定线程。Linux 中的条件等待睡眠有多准确?

如果有任何操作系统提供的机制来获取以毫秒为单位的计时?

谢谢 普拉桑特

C++ Linux

评论

1赞 Jesper Juhl 11/11/2023
select()with a timeout 可用于实现计时器。
1赞 Paul Sanders 11/11/2023
关于计时准确性/粒度,我认为您受制于调度程序的“滴答声”间隔,并且(与 Windows 不同)我不知道有任何方法可以更改它。这里有一点信息:stackoverflow.com/a/14472211/5743288。然而,有一个低延迟的 Linux 内核在某个地方运行。这可能会提供可能性。
0赞 Ulrich Eckhardt 11/11/2023
对两次通话之间的延迟有什么实际要求?顺便说一句:你问了两个问题(不好!),当你找到第二个问题的解决方案时,第一个问题可以得到回答。
4赞 Peter 11/11/2023
查找“realtime linux”。从形式上讲,整个 linux 操作系统(内核和用户模式程序)由实时微内核执行,因此任何被指定为实时的东西都可以抢占(以高于 linux 操作系统中运行的所有内容的优先级运行)。 RT linux 是一组扩展,允许直接在该微内核中运行任务(但确实需要强制执行时序约束来阻止诸如这些任务使整个 linux 操作系统挨饿的问题)。不过,并非每个 linux 发行版都带有 RT linux 扩展。

答: 暂无答案