当前位置:  技术问答>linux和unix

nanosleep小延时不能实现,这个函数和select、sleep用什么区别

    来源: 互联网  发布时间:2017-03-21

    本文导语:  在做录像回放快进的时候,需要毫秒级延时; 用的是nanosleep,但是在延时设定小于20ms的时候,就无法实现,感觉从调用nanosleep到返回,差不多用了20ms(排除了线程优先级问题),我想问问nanosleep是什么机制,和select...

在做录像回放快进的时候,需要毫秒级延时;
用的是nanosleep,但是在延时设定小于20ms的时候,就无法实现,感觉从调用nanosleep到返回,差不多用了20ms(排除了线程优先级问题),我想问问nanosleep是什么机制,和select和sleep用什么区别;
请大牛指点!!!

|
linux下时间相关的函数的精度都基于linux内核中jiffies,而jiffies取决定系统的可编程计时器的值,也就是HZ, 一般linux x86的HZ值是100,也就是每秒振动十次,因此精度就是10ms.所以系统os时间精度最高只能是10ms,不管是用nanosleep还是select获得的最高精度只能是10ms.

如果想获得更高精度的时间,需要访问时间时钟rtc寄存器,在linux中可能通过ioctl访问/dev/rtc来获得,具体参考想关资料

|
man
The suspension time may be longer than requested  because  the  argument
       value  is  rounded  up to an integer multiple of the sleep resolution or because of the scheduling of other activity by the
       system. But, except for the case of being interrupted by a signal, the suspension time shall not  be  less  than  the  time
       specified by rqtp, as measured by the system clock CLOCK_REALTIME.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪位知道如何将nanosleep精确到微秒级别?
  • 调用nanosleep后,系统就再也没有反应了,会是啥原因?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3