免费注册 查看新帖 |

Chinaunix

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

关于定时器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-29 16:53 |只看该作者 |倒序浏览
程序要用select监测2个socket,但是也要用到定时器,如果用系统的setitimer,会把select中断,这绝对是不行的,并且对定时器的精度也有要求。(定时器不只一个)
现在有两个方案,用setitimer,select监测到中断后,再继续执行select,我是想定时器执行完了后继续监测select,不知道可不可行。
第二个,用select,因为定时器不只一个,所以代码应该有点麻烦。

大家怎么看,还是我想的哪个地方有问题。
另外问,select和setitimer是微秒级的还是毫秒级的啊?

论坛徽章:
0
2 [报告]
发表于 2007-05-29 19:42 |只看该作者
多线程环境?

论坛徽章:
0
3 [报告]
发表于 2007-05-30 08:05 |只看该作者
沒有搞清楚你的實際需求,不過select中斷後你可以繼續啊
只要把select放在一個循環中,並判斷返回值(如果是-1,再檢查errno)就可以了。

论坛徽章:
0
4 [报告]
发表于 2007-05-30 09:27 |只看该作者
第一种方案,可以,在select返回-1中,检查如果errno == EINTR,则进行下一个循环,效果跟select超时差不多;
第二种方案,需要精密考虑,因为一个进程中只能有一个定时器,自己实现的定时器例外。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP