epool与select有什么区别
2024-09-17 18:22:06
select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,一般来说内存越大,fd上限越大,1G内存都能达到大约10w左右。
select的轮询机制是系统会去查找每个fd是否数据已准备好,当fd很多的时候,效率当然就直线下降了,epoll采用基于事件的通知方式,一旦某个fd数据就绪时,内核会采用类似callback的回调机制,迅速激活这个文件描述符,而不需要不断的去轮询查找就绪的描述符,这就是epool高效最本质的原因。
无论是select还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的,而select则做了不必要的拷贝
最新文章
- Kafka Linux 安装
- C3P0的两种使用方法
- WCF Routing 服务
- poj1573 Robot Motion
- mysql主主复制(双主复制)配置步骤
- Linux重定向命令
- HCE基础知识
- Python--关于 join 和 split
- Retrofit入门
- Shell获取Aix/linux/unix机器上db2和os的信息并上传到指定服务器
- webBrowser1_DocumentCompleted不停被调用
- Yii快速入门教程
- 在XP系统中自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同,导致抛出的异常不同
- 转:面向切面编程AOP的理解
- 利用KindEditor实现公司通讯录的维护
- 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程
- 12.3、Libgdx的图像之截屏
- MySQL技术内幕 InnoDB存储引擎(笔记)
- YII框架组件CListView实现分页
- Java学习图
热门文章
- JCEF-鼠标右键菜单
- Cheat Engine 基本用法
- Golang: 读写之外的其他文件操作
- mybatis + oracle,出现ORA-01461:仅能绑定要插入LONG列的LONG值
- springboot2.1.3 配置前后端跨域问题
- 联想ideapad-330C 在Ubuntu18.04 上安装Realtek 8821CE无线网卡驱动
- 提高用git下载代码时的成功率
- 基于gin框架搭建的一个简单的web服务
- 2019年杭电多校第三场 1011题Squrirrel(HDU6613+树DP)
- 摘:Selenium api学习