当前位置:  技术问答>linux和unix

select()既然是轮询,为什么不占用很多cpu呢?

    来源: 互联网  发布时间:2017-02-05

    本文导语:  处理完了一个fd的请求以后,select再次不断轮询整个数组。 但是我发现,没有fd有IO操作的时候,select并不会占用cpu到100%,而是出于阻塞的状态。 问题是, (1)当某个fd发生IO操作的时候,操作系统既然已经知道了是哪...

处理完了一个fd的请求以后,select再次不断轮询整个数组。
但是我发现,没有fd有IO操作的时候,select并不会占用cpu到100%,而是出于阻塞的状态。
问题是,

(1)当某个fd发生IO操作的时候,操作系统既然已经知道了是哪个fd发生动作,为什么select还要从头到尾扫一遍,不像epoll那样哪个fd有动作,触发哪个回调?

(2)这是select函数本身实现的时候的缺陷吗? 还是说,select函数这样实现,有别的考虑/需求,尽管轮询的效率不高,但是有别的场合下,epoll不能做到的事情,select能做到?

(3)Posix标准有没有规定select怎么实现? 操作系统直接告诉select函数哪个fd发生动作不就行了,干嘛还要麻烦select函数自己去扫描一遍?

|
select不是轮询。只是有数据时,会依次处理有数据的fd。没有数据的fd不被处理

|
select不是轮询吧?
应该是wait,notify类似的机制吧
事实上我不知道select有没有遍历数组,但是遍历数组不是轮询,不是那么耗时的事情。

while XXX:
   sleep #甚至没有这个sleep
   XXX = xxxxxxx
这样才叫耗时耗cpu的轮询吧?

   

|
select  应该属于选择吧

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selected定义及介绍
  • 究竟怎么样取得的<select name="select_user" size="8" multiple>值
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selectable定义及介绍
  • man select 结果返回 No manual entry for select
  • java命名空间javax.swing.tree类defaulttreeselectionmodel的类成员方法: selection定义及介绍
  • select <0时调用exit(0),为什么程序没有退出,而是继续执行select了?
  • java命名空间javax.swing.tree类defaulttreecellrenderer的类成员方法: selected定义及介绍
  • insert into select和select into的使用和区别介绍
  • java命名空间java.awt.event类itemevent的类成员方法: selected定义及介绍
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • java命名空间javax.swing类defaultbuttonmodel的类成员方法: selected定义及介绍
  • JDBC里select sum和select返回的字段类型不一样
  • java命名空间javax.swing.text.html类html.tag的类成员方法: select定义及介绍
  • sql代码:select database select all table
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: selected定义及介绍
  • Oracle中select 1和select *的区别
  • java命名空间javax.swing.plaf.synth接口synthconstants的类成员方法: selected定义及介绍
  • jquery下拉select控件操作方法分享(jquery操作select) iis7站长之家
  • java命名空间javax.sound.midi类shortmessage的类成员方法: song_select定义及介绍
  • INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别
  • java命名空间javax.swing类jfilechooser的类成员方法: cancel_selection定义及介绍
  • select into 和 insert into select 两种表复制语句


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,