免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2676 | 回复: 1
打印 上一主题 下一主题

[Linux] 应用层怎么实现1ms的精确休眠? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-22 10:17 |只看该作者 |倒序浏览
ARM9平台,Linux2.6系统下想让线程精确休眠一毫秒,采用usleep和select函数发现精度不够,精度最多只能达到2ms,可是我已经把系统的时钟中断频率HZ调到1000了,按道理精度应该可以达到1ms了,这是怎么回事?

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
2 [报告]
发表于 2013-03-21 12:18 |只看该作者
楼主别想了,软件是做不到精确的。

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

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

我对arm不熟悉,但是像这种精度要求,x86机器上精度会高一些。 但是x86也是无法做到1ms精度的(当然可以保证在绝大多数情况下是1ms,但不能保证100%),就算硬件能够支持做到,还会有系统调度的原因导致无法完全满足。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP