Linux I/O 多路复用 epoll 详解
epoll 是 Linux 内核中一种高效的 I/O 多路复用 (I/O Multiplexing) 技术,自 Linux 2.5.44 版本引入。它旨在解决传统 select() 和 poll() 系统调用在大规模并发连接场景下的性能瓶颈,尤其适用于高并发的网络服务器。 核心思想:epoll 避免了每次调用都将所有文件描述符从用户空间拷贝到内核空间,并且在文件描述符就绪时通过回调机制通知应用程序,而非通过轮询,从而显著提升了 I/O 效率。 一、为什么需要 epoll?在网络编程中,服务器需要同时处理多个客户端连接。传统的 I/O 模型在处理并发时面临挑战: 阻塞 I/O (Blocking I/O): 一个线程或进程只能处理一个连接。如果有大量连接,需要创建大量线程/进程,这会消耗大量系统资源(内存、CPU 上下文切换开销),且可伸缩性差。 非阻塞 I/O + 忙轮询 (Non-blocking I/O + Polling): 应用程序循环遍历所有文件描述符,反复询问它...
