用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? 展开
while(1)
select(0,NULL,NULL,NULL,&timeout);
然后运行用top查看cpu,发现这个进程占了大部分的cpu? 展开
2个回答
展开全部
select是等待IO读取阻塞的时侯基本不占CPU,但因为你什么都没select,参数都为NULL select会立即返回,不会有读取IO的操作,不存在任何IO阻塞,所以cpu都是满的。
更多追问追答
追问
你看清楚,我可是在等待timeout结束,怎么会立即返回,我的疑问是等待timeout这段时间占不占cpu
追答
你任何read,write操作都没指定,timeout会直接被忽略,不信你select下再加一行,timeout设成很长时间,自己试下便可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询