Linux select 和 epoll 实现原理详解:小白也能懂
Linux 的 select 和 epoll 是用于网络编程中的多路复用技术,它们实现原理可以理解为以下几个步骤:
- 将多个文件描述符 (socket) 加入到一个集合中
- 调用 select 或 epoll 等函数,将集合传入
- select 或 epoll 函数等待文件描述符中有数据可读或可写
- 当有数据可读或可写时,select 或 epoll 函数返回,并将有数据可读或可写的文件描述符放入一个新的集合中
- 开始处理有数据可读或可写的文件描述符
这样,我们可以通过一次系统调用等待多个文件描述符的事件,而不需要轮询每个文件描述符,减少了系统调用的次数,提高了效率。
其中,select 函数是将所有需要监视的文件描述符放入一个集合中,每次调用都要将整个集合传入,效率较低;而 epoll 函数则是通过监听一个文件描述符 (epoll 文件描述符),每次只需要将有事件发生的文件描述符加入到 epoll 文件描述符中,效率更高。
原文地址: https://www.cveoy.top/t/topic/nPyu 著作权归作者所有。请勿转载和采集!