epoll

作者: 徐振杰 | 来源:发表于2019-03-09 12:13 被阅读0次

select无差别轮询
(监听的数量,可读,可写,异常)返回值是所有满足条件的监听集合个数

poll可以指定size,
可以突破select的上限1024

event poll集成了上面两个,用的是红黑树,如果有事件发生传回文件描述符到用户态的一个队列中
有两种触发模式,减少阻塞等待:ET 边沿触发 LT 水平触发
边沿触发只在有事件写过来的时候才会触发
比如有5000个字节传过来,只需要读50个字节,就能知道要不要读剩下的字符了,所以就用边沿触发

epoll 用红黑树和链表,并且epoll_wait用了回调函数,不用每次都把数据从用户态拷贝到内核态。

select 要每次都从用户态拷贝到内核态,并且是自己轮询,直到有数据就从内核拷贝数据到用户十分耗时

poll没有个数限制,因为用的是链表,而select只能用有32*32个地址,应为select的fd最多只有32个正数大小

在ET模式下,要做成非阻塞,因为这样很容易会死锁
[https://blog.csdn.net/russell_tao/article/details/7160071]
(https://blog.csdn.net/russell_tao/article/details/7160071)
https://juejin.im/post/5a3b7c1a5188252582278ef2

相关文章

网友评论

      本文标题:epoll

      本文链接:https://www.haomeiwen.com/subject/ipdspqtx.html