1

对于在 MV Linux 下运行的应用程序,我有一个必须每 10 毫秒激活一次的线程。当我使用 ulseep/nanosleep/select 时,线程每 20 毫秒返回一次。为了改变这种行为,我必须使用哪些内核参数?谢谢,拉菲

4

1 回答 1

0

Linux 不是实时操作系统。无法保证睡眠的准确性。当您调用sleep时,线程被挂起并且在请求的持续时间过去之前无法运行。当它再次可运行时,由调度程序在一些执行时间可用时再次运行线程。

调度事件之间的间隔由内核编译参数决定CONFIG_HZ。例如when CONFIG_HZ=250(默认),调度事件每1s/250Hz = 4ms触发一次。因此,当您的线程再次可运行时,在实际恢复之前最多可以经过 4 毫秒,如果您的线程当时没有最高优先级,则可以再经过 4 毫秒,等等。

于 2014-05-13T17:24:46.380 回答