免费注册 查看新帖 |

Chinaunix

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

做定时器时,select和nanosleep两个方法何者更精确? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-14 16:21 |只看该作者 |倒序浏览
如题。
select方法和nanosleep方法用来做定时器的时候,在系统任务较重的时候,那一个定时更准确呢?那一个精度更高呢?

论坛徽章:
0
2 [报告]
发表于 2007-08-14 18:00 |只看该作者
select方法和nanosleep方法都是sleep方法,这样的定时器能用吗?

论坛徽章:
0
3 [报告]
发表于 2007-08-14 18:31 |只看该作者
是一样的

都是:设置定时器睡眠,然后超时或者条件满足。

    如果要很精确,把优先级放高一点吧。

论坛徽章:
0
4 [报告]
发表于 2007-08-14 18:37 |只看该作者

回复 #1 buxoman 的帖子

从理论上来说nanosleep使用了timespec,而select使用timeval,应该是nanosleep精度要高。
但是,一般系统给提供的定时器精度都不高,所以实际使用起来两者效果一样。

论坛徽章:
0
5 [报告]
发表于 2007-08-15 01:08 |只看该作者
pselect好像精度更高些。

论坛徽章:
0
6 [报告]
发表于 2007-08-15 15:42 |只看该作者
原帖由 pinyin 于 2007-8-14 18:00 发表
select方法和nanosleep方法都是sleep方法,这样的定时器能用吗?

不是吧
在SunOS下查的
man sleep:
In a single-threaded program (one not linked  with  -lthread
or  -lpthread),  the  routine  is  implemented by setting an
alarm signal and pausing until it  (or  some  other  signal)
occurs.  The previous state of the alarm signal is saved and


关于nanosleep,网上搜到的:
   vxd (napoo◆这个春天有点蓝) 于  (Wed Mar 10 14:58:31 2004)  提到:

如果是用nanosleep实现的,那应该不是利用信号了:
in kernel/timer.c:
asmlinkage long sys_nanosleep (...)
{
        ...
        expire = schedule_timeout (...);
        ...
}

也就是说,nanosleep是用kernel timer实现的

论坛徽章:
0
7 [报告]
发表于 2007-08-17 14:52 |只看该作者
原帖由 icydancer 于 2007-8-14 18:37 发表
从理论上来说nanosleep使用了timespec,而select使用timeval,应该是nanosleep精度要高。
但是,一般系统给提供的定时器精度都不高,所以实际使用起来两者效果一样。


同意

论坛徽章:
0
8 [报告]
发表于 2007-08-17 17:21 |只看该作者
原帖由 galaxywar 于 2007-8-15 15:42 发表

不是吧
在SunOS下查的
man sleep:
In a single-threaded program (one not linked  with  -lthread
or  -lpthread),  the  routine  is  implemented by setting an
alarm signal and pausing until it  ...


我想说的不是这个意思。
select方法和nanosleep方法都是休息指定的时长后醒来干活,所以“都是sleep方法”。用这些方法做定时器,时间偏差问题解决起来很麻烦,而且楼主说了“系统任务较重”。

论坛徽章:
0
9 [报告]
发表于 2008-04-15 23:11 |只看该作者
请问做定时器不用这两个那用啥啊?
谢谢指教

论坛徽章:
0
10 [报告]
发表于 2008-04-15 23:20 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP