免费注册 查看新帖 |

Chinaunix

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

select()的简单问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-09 09:57 |只看该作者 |倒序浏览
select()函数作为I/O复用时,如果其超时值设为0,则立即返回,即处于polling模式,程序对select进行"轮询",一般认为这样会对性能有影响,请问,会有什么样的影响?我做了试验,我把超时值设为1秒,我发现这两种情况下程序的速度没什么变化,那么到底超时值为0对程序会有什么样的影响?为什么设定一个超时值就可以避免对CPU时间的浪费呢?谢谢!

论坛徽章:
0
2 [报告]
发表于 2003-08-09 11:11 |只看该作者

select()的简单问题

怎么没人回复我啊?55555555555~~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-08-10 10:10 |只看该作者

select()的简单问题

如果你的进程不停的接到数据,当然就看不出区别了。都马上返回

如果不忙的话,你不停的轮询一直占用cpu。而设置超时,在等待的时候,
进程阻塞,cpu资源就可以空闲给其它的进程用了。

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

select()的简单问题

select如果处于轮询状态,就相当于不停的在问“有数据了吗?”,你的程序可是要靠cpu来运行的;而处于阻塞状态的时候,就相当于睡觉,有数据的时候,其它“人”会告诉它“喂,数据来了,快处理吧”,你的select就返回了,ok?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2003-08-10 16:47 |只看该作者

select()的简单问题

[quote]原帖由 "fls"]select如果处于轮询状态,就相当于不停的在问“有数据了吗?”,你的程序可是要靠cpu来运行的;而处于阻塞状态的时候,就相当于睡觉,有数据的时候,其它“人”会告诉它“喂,数据来了,快处理吧”,你的select就返?.........[/quote 发表:

好!形象!就冲这段话,马上置成“精彩回帖”。

论坛徽章:
0
6 [报告]
发表于 2003-08-12 09:27 |只看该作者

select()的简单问题

两位回答的非常精彩 ,谢谢

论坛徽章:
0
7 [报告]
发表于 2003-08-12 09:33 |只看该作者

select()的简单问题

原帖由 "flw" 发表:

好!形象!就冲这段话,马上置成“精彩回帖”。
   
嗯!同意

论坛徽章:
0
8 [报告]
发表于 2003-08-12 09:41 |只看该作者

select()的简单问题

我也明白了,谢谢!

论坛徽章:
0
9 [报告]
发表于 2003-08-12 10:19 |只看该作者

select()的简单问题

新问题又来了
如果在单任务系统中,上述问题可能会影响系统的性能;但:
如果我用的是多任务的操作系统,它肯定是按照时间片来分配任务的,也就是一段时间内只能有一个任务在跑,如果select()超时值设为0的话,立即返回,把CPU时间交给了别的任务,这样反而对性能有提高??迷惑中...望大虾指导!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2003-08-12 18:41 |只看该作者

select()的简单问题

如果你觉得select或者poll影响了性能。

那么采用其它的方式吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP