为什么需要 I/O 多路复用 #
(select → poll → epoll 的进化过程)
epoll 工作原理 #
(红黑树 + 就绪链表、epoll_create / epoll_ctl / epoll_wait)
水平触发 vs 边缘触发 #
(用具体的 recv 场景对比两者行为差异)
非阻塞 I/O 的必要性 #
(ET 下为什么必须非阻塞、阻塞 + ET 会导致什么问题)
ONESHOT 与线程安全 #
(一个连接同时只被一个线程处理的保证、mod_fd 重新注册)
本项目中的应用 #
(listenfd 用 LT、connfd 用 ET+ONESHOT 的原因)
参考资料 #
- 项目 GitHub
man 7 epoll