关于select、poll、epoll的简述

select

    最早出现的多路复用io接口,解决了非阻塞io的资源浪费问题,将所有的网络io请求放在select,然后对其进行遍历,筛选出可以处理的事件,缺点是连接有上限。32位操作系统下是1024个,64位为2048个。对于资源储存模块(bytebuff)不可使用重复利用,每次都轮询所有的连接,时间复杂度为o(n),会进行内核态和用户态之间的拷贝,增大了开销。

poll

    select的改进版本,采用了链表的形势,使连接理论上不存在上限,并且是的资源储存模块可以重复利用。其他的和select一样。

epoll

   epoll技术做了很大的改进,首先连接没有上限,资源存储模块可以重复利用,然后,epoll使用了函数回调的方式,如果发现有可以处理的连接就把这个连接放在前段,记录有点多少个可以处理的事件,在处理的时候直接获得所有可以处理的事件,时间复杂度为o(1),并且使用了零拷贝技术(mmap,我也不知道为什么不使用sendfile),直接将内核模块的数据映射给用户模块,降低开销。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值