CS-Notes 学习笔记
Java 后端 · 操作系统

select、poll 和 epoll 有什么区别?

先自己想一想,再看参考要点

参考要点

  • select 每次调用都要把描述符集合复制到内核并逐个检查,开销与描述符数成正比,只能监听编号小于 1024 的描述符
  • poll 用 pollfd 数组,没有 1024 限制,但同样每次复制和遍历
  • epoll 用 epoll_ctl 把描述符注册到内核的红黑树中只复制一次,就绪时由回调加入就绪链表,epoll_wait 只返回就绪的事件
  • 监听 1 万个描述符、只有 1 个就绪时,poll 每次约 1.6 ms,epoll_wait 约 0.21 µs,但 epoll 只能在 Linux 上使用
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。