mylanc 发表于 2013-02-22 10:17

应用层怎么实现1ms的精确休眠?

ARM9平台,Linux2.6系统下想让线程精确休眠一毫秒,采用usleep和select函数发现精度不够,精度最多只能达到2ms,可是我已经把系统的时钟中断频率HZ调到1000了,按道理精度应该可以达到1ms了,这是怎么回事?

cxytz01 发表于 2013-03-21 12:18

楼主别想了,软件是做不到精确的。

这个问题我遇到过的,
select可以稍微精确,但是十分的耗cpu资源(arm平台上,低端配置,极易发现)
usleep误差更大,其实不管slee还是usleep本质都是nanosleep,一样的。

曾经有个多线程程序,正常情况下是每1s200多次循环,拷机拷机,发现出现了3~6s都没有循环一次的情况。

我对arm不熟悉,但是像这种精度要求,x86机器上精度会高一些。 但是x86也是无法做到1ms精度的(当然可以保证在绝大多数情况下是1ms,但不能保证100%),就算硬件能够支持做到,还会有系统调度的原因导致无法完全满足。
页: [1]
查看完整版本: 应用层怎么实现1ms的精确休眠?