epoll
linux应用层并发程序
linux网络服务器

现在软件基本都有上网的功能
所谓上网就是访问服务器
我们浏览器访问网页就是访问web服务器
收发邮件使用邮件服务器
软件下载使用FTP服务器
打游戏使用的是游戏服务器
比如:
淘宝使用web、数据库、聊天等服务器
腾讯使用web、邮箱等服务器
10个亿访问服务器,并发量巨大
linux服务器占用量很大,大部分公司都是使用的linux服务器,windows使用的很少
运营商给你分配的IP地址基本上是内网地址,而不是外网地址,上外网是通过网关实现的,所以这个IP地址实际是网关的IP地址
大规模并发
多任务(进程、线程)并发效率太低、能处理的客户端少,资源有限
多路复用(select、poll、epoll)
select是windows、linux,unix等都有的
poll和epoll是linux特有的
web apache服务器使用的就是seletc模型,ngix使用epoll模型
select和poll的缺点
最大并发数限制:一个进程最多打开1024个文件描述符,select模型的最大并发数就被限制了(poll
效率问题:每次进行select调用都会线性扫描全部的fd集合,这样效率就会呈线性下降


epoll成为linux服务器高并发的首选
服务器可以用C、C++、JAVA、Python等多种语言来实现,无论哪种编程语言,高并发服务器最终都是使用的epoll API,都是对epoll进行了封装,只不过封装的深浅而已,比如java里面的aio、c++里面的库等都有对epoll的封装

epoll在内核中是怎么实现的
epoll和select的最大区别就是它用的是树形模型,他查询的时候是创建了一个红黑树,红黑树中加入了文件描述符集合








浙公网安备 33010602011771号