服务端编程,首要问题是选取IO模型.即如何处理大量连接,服务更多的客户端? 我们最早有2种解法,各有不足: 1.阻塞IO,每个连接都需要一个线程. 随着连接数增多,线程数剧增,系统开销太大. 2.非阻塞IO,采用“忙轮询”的方式处理多个连接. 空闲连接很多时,太浪费CPU. 现在,业内常用方案是IO复用. 单线程处理大量连接,应用不需要“忙轮询”,内核发现“活跃连接”通知应用.所有连接都空闲时,阻塞应用线程,释放CPU. 目前,最成熟的IO复用方案是epoll,我们今天的主角. 一 epoll的…