在Linux系统中,epoll和poll是两种I/O多路复用技术,它们可以让单个线程处理多个I/O事件。
poll是一种比较早的技术,它的工作方式是轮询所有的文件描述符,看哪些文件描述符准备好了I/O操作。这种方式的缺点是,当文件描述符的数量很大时,轮询的开销会很大。
epoll是为了解决这个问题而出现的。epoll使用一个事件驱动的方式,只关注那些真正准备好I/O操作的文件描述符。这样,即使文件描述符的数量很大,也不会影响到epoll的效率。
下面是一个简单的epoll的示例代码:
#include <sys/epoll.h>
#include <netinet/in.h>
#include <unistd.h>