博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
epoll/select
阅读量:6982 次
发布时间:2019-06-27

本文共 609 字,大约阅读时间需要 2 分钟。

  hot3.png

epoll相对select优点主要有三:

1.   select的句柄数目受限,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE    1024  表示select最多同时监听1024个fd。而epoll没有,它的限制是最大的打开文件句柄数目。

2.   epoll的最大好处是不会随着FD的数目增长而降低效率,在selec中采用轮询处理,其中的数据结构类似一个数组的数据结构,而epoll是维护一个队列,直接看队列是不是空就可以了。epoll只会对"活跃"的socket进行操作---这是因为在内核实现中epoll是根据每个fd上面的callback函数实现的。那么,只有"活跃"的socket才会主动的去调用 callback函数(把这个句柄加入队列),其他idle状态句柄则不会,在这点上,epoll实现了一个"伪"AIO。但是如果绝大部分的I/O都是“活跃的”,每个I/O端口使用率很高的话,epoll效率不一定比select高(可能是要维护队列复杂)。

3.   使用mmap加速内核与用户空间的消息传递。无论是select,poll还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的。

转载于:https://my.oschina.net/guyson/blog/220222

你可能感兴趣的文章
cdh4.6.0到cdh5.2.0 upgrade和rollback问题小结
查看>>
MalformedInputException处理
查看>>
OPENAPI的测试用例编写方法
查看>>
在Windows Server 2008 R2上安装 PowerShell 5.0
查看>>
事件通知(Event Notification)实践
查看>>
快速构建Windows 8风格应用28-临时应用数据
查看>>
DVWA系列之12 利用Burpsuite进行暴力破解
查看>>
华为VRRP(不同vlan之间的冗余备份)
查看>>
单片机数码管码段
查看>>
Liferay 启动过程分析14-初始化resource code
查看>>
实验(一):认识数据库的参数文件
查看>>
\做为分割符要注意的问题
查看>>
解决使用perl lwp访问网页乱码的问题
查看>>
java json和object互换
查看>>
IT技术晋级之路-系统分区
查看>>
脚本语言程序员怎么学习程序设计?
查看>>
Enterprise Library 2.0 Hands On Lab 翻译(15):加密应用程序块(二)
查看>>
帮助电力,轻松实现运维管理
查看>>
三地跨区域链路 汇聚统一监控平台——国际化综合性顾问咨询公司阿特金斯
查看>>
SQL SERVER与MYSQL 的重复插入的区别
查看>>