epoll 和select的区别

相同点:都是多路复用

 

不同点:

select是轮询所有的流,时间辅助度是0(n),处理的流越多,无差别轮询时间就越长;

单个进程可监控的fd数量是有限的,32位机默认是1024;64位的是2048,内核需要将消息传递到用户空间,都需要内核拷贝动作

 

epoll是基于事件驱动的,哪个流发生了怎么样的I/O事件通知我们,事件复杂度是o(1),没有最大并发连接的限制,epoll 对于1G的内存可以支持10万个,可以通过/proc/sys/fs/file-max可以查看到,对于内存的拷贝:使用mmap()文件映射加速和内核空间的消息传递,减少内存的复制开销。  ET  (边缘触发)和  LT   (水平触发) , LT:默认的发式,只要fd还有数据,每次epoll_wait都会返回它的事件,无论fd是否是可读还是可写。ET:它只会提示一次,知道下次有数据,所以一定要每次把数据读光

 

 

如果连接数较少并且连接十分活跃的情况下,select比epoll要好,毕竟epoll通知机制要很多回调函数

 

https://www.cnblogs.com/aspirant/p/9166944.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值