用select函数定时占用了几乎全部的cpu,为什么

有人说select函数在文件没有IO时基本不占CPU,可为什么我试了一下用select定时,在主函数中直接写一个循环while(1)select(0,NULL,NULL,... 有人说select函数在文件没有IO时基本不占CPU,可为什么我试了一下用select定时,在主函数中直接写一个循环
while(1)
select(0,NULL,NULL,NULL,&timeout);
然后运行用top查看cpu,发现这个进程占了大部分的cpu?
展开
 我来答
loboho
2012-11-23 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:411万
展开全部
select是等待IO读取阻塞的时侯基本不占CPU,但因为你什么都没select,参数都为NULL select会立即返回,不会有读取IO的操作,不存在任何IO阻塞,所以cpu都是满的。
更多追问追答
追问
你看清楚,我可是在等待timeout结束,怎么会立即返回,我的疑问是等待timeout这段时间占不占cpu
追答
你任何read,write操作都没指定,timeout会直接被忽略,不信你select下再加一行,timeout设成很长时间,自己试下便可。
奥贝利科斯
2012-11-23 · TA获得超过3447个赞
知道小有建树答主
回答量:729
采纳率:65%
帮助的人:358万
展开全部
应为你用了WHILE(1)
你这么写
while(1)
i++;
你就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式