select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,一般来说内存越大,fd上限越大,1G内存都能达到大约10w左右。

select的轮询机制是系统会去查找每个fd是否数据已准备好,当fd很多的时候,效率当然就直线下降了,epoll采用基于事件的通知方式,一旦某个fd数据就绪时,内核会采用类似callback的回调机制,迅速激活这个文件描述符,而不需要不断的去轮询查找就绪的描述符,这就是epool高效最本质的原因。

无论是select还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的,而select则做了不必要的拷贝

最新文章

  1. Kafka Linux 安装
  2. C3P0的两种使用方法
  3. WCF Routing 服务
  4. poj1573 Robot Motion
  5. mysql主主复制(双主复制)配置步骤
  6. Linux重定向命令
  7. HCE基础知识
  8. Python--关于 join 和 split
  9. Retrofit入门
  10. Shell获取Aix/linux/unix机器上db2和os的信息并上传到指定服务器
  11. webBrowser1_DocumentCompleted不停被调用
  12. Yii快速入门教程
  13. 在XP系统中自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同,导致抛出的异常不同
  14. 转:面向切面编程AOP的理解
  15. 利用KindEditor实现公司通讯录的维护
  16. 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程
  17. 12.3、Libgdx的图像之截屏
  18. MySQL技术内幕 InnoDB存储引擎(笔记)
  19. YII框架组件CListView实现分页
  20. Java学习图

热门文章

  1. JCEF-鼠标右键菜单
  2. Cheat Engine 基本用法
  3. Golang: 读写之外的其他文件操作
  4. mybatis + oracle,出现ORA-01461:仅能绑定要插入LONG列的LONG值
  5. springboot2.1.3 配置前后端跨域问题
  6. 联想ideapad-330C 在Ubuntu18.04 上安装Realtek 8821CE无线网卡驱动
  7. 提高用git下载代码时的成功率
  8. 基于gin框架搭建的一个简单的web服务
  9. 2019年杭电多校第三场 1011题Squrirrel(HDU6613+树DP)
  10. 摘:Selenium api学习