Linux 高性能服务 epoll 的本质,真的不简单(含实例源码)
原文中文,约9500字,阅读约需23分钟。发表于: 。设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。
本文介绍了epoll在Linux系统中的原理和使用方法,epoll是一种高效的事件驱动方式,可以处理大量并发连接。与select和poll不同,epoll在内核中申请了一个简易的文件系统,将事件的处理分成了三个步骤:epoll_create、epoll_ctl和epoll_wait。通过这种方式,只需要在进程启动时建立一个epoll对象,并在需要的时候向其中添加或删除连接即可。epoll的两种触发模式分别是LT(水平触发)和ET(边缘触发),其中ET模式只有数据到来才触发,而LT模式只要有数据都会触发。最后,文章介绍了epoll的反应堆模型和相关的代码示例。