select,poll,epoll_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > select,poll,epoll

select,poll,epoll

 2018/3/20 15:47:28  chen.zhu  程序员俱乐部  我要评论(0)
  • 摘要:select,poll,epoll详解转载自:https://www.cnblogs.com/Anker/p/3265058.htmljdk1.4中nio中引入了select,poll模式,jdk1.5中sun对其进行了优化,引入了epoll。select缺点:1:每次调用select都需要把fd从用户态拷贝到内核态,开销比较大。2:每次都需要在内核遍历传入的fd。3:支持文件数量比较小,默认是102poll缺点:poll的实现和select非常相似,只是描述fd集合的方式不同
  • 标签:
select,poll,epoll
详解转载自:https://www.cnblogs.com/Anker/p/3265058.html

jdk1.4中nio中引入了select,poll模式,jdk1.5中sun对其进行了优化,引入了epoll。

select缺点:
1:每次调用select都需要把fd从用户态拷贝到内核态,开销比较大。
2:每次都需要在内核遍历传入的fd。 
3:支持文件数量比较小,默认是102

poll缺点:
poll的实现和select非常相似,只是描述fd集合的方式不同,poll使用pollfd结构而不是select的fd_set结构,其他的都差不多。

epoll:
epoll提供了三个函数进行处理:epoll_create,epoll_ctl和epoll_wait,epoll_create是创建一个epoll句柄;epoll_ctl是注册要监听的事件类型;epoll_wait则是等待事件的产生。
epoll优点:
1:每次注册新事件到epoll句柄都会把所有的fd拷贝进来,而不是在epoll_wait中重复拷贝,这样确保fd只会被拷贝一次 。
2:epoll不是像select/poll那样每次都把fd加入等待队列中,epoll把每个fd指定一个回调函数,当设备就绪时,唤醒等待队列的等待者就会调用其的回调函数,这个回调函数会把就绪的fd放入一个就绪链表。epoll_wait就是在这个就绪链表中查看有没有就绪fd。
3:epoll没有fd数目限制

  • 相关文章
发表评论
用户名: 匿名