Skip to content
困难

一句话答案

select 有 1024 fd 限制且全量遍历,poll 无限制但仍全量,epoll 红黑树+回调链表 O(1) 就绪检测最高效。

核心要点
维度selectpollepoll
fd上限1024无限制无限制
fd传递每次全量拷贝每次全量epoll_ctl增量
就绪检测O(n)遍历O(n)遍历O(1)就绪链表
触发方式水平触发水平触发ET+LT

结论: 大量连接用epoll,少量连接差异不大

追问与易错

追问方向:

  • epoll 的 LT 和 ET 什么区别?
  • 连接数少时用哪个?
  • 为什么 ET 编程更复杂?

易错点:

  • ❌ epoll 永远最好——连接数少时 select 更简单
  • ❌ ET 一定比 LT 快——ET 需要循环读取更复杂

💡 记忆锚点

三种模型像点名:select是班主任每次拿着花名册从头喊到尾(O(n)遍历),还只能管1024人;poll取消了人数限制但还是从头喊到尾;epoll像装了呼叫按钮,谁举手谁响铃(回调+就绪链表O(1)),人再多也不怕。大班用epoll,小班用哪个都行。