当前位置: 首页 > news >正文

epoll 的实现

epoll 这么好,为什么迟至 2.6 版本的 kernel 才支持(epoll manual: The epoll API was introduced in Linux kernel 2.5.44.)?2.4 版本的 kernel 不支持 epoll?

原因很简单,epoll 没什么神奇的。在早期没有太多的并发连接要处理,select/poll 足以应对,遍历一遍又能怎样。而实现 epoll 的基础设施在早期内核里也没有,所以支不支持的,也不是什么大家关注的事。

epoll 依赖的内核基础设施只是一个 wakeup 时的 callback:
在这里插入图片描述

epoll 可注册一个 func callback,当 tcp_data_ready(也适用于其它协议) 被调用时,在该 func 中先将自己放进一个 ready list,再唤醒 epoll_wait,后者只要将 ready list 上报即可,省去了像 select/poll 那样自行遍历找活跃 socket,这就是 epoll 实现的精髓。

epoll 省去了遍历开销,这意味着并发连接越大且活跃连接越少,epoll 优势越大,反之,如果所有连接都是活跃连接,epoll 反而会损失性能,看看那一大堆代码就会明白,每一条指令都是要花费 CPU 时间的,select 受 1024 限制,poll 就挺好。

皮鞋没有蹬上,露着白袜子。

浙江温州皮鞋湿,下雨进水不会胖。

http://www.lryc.cn/news/167658.html

相关文章:

  • 怎么用excel管理固定资产
  • 记录crack某IDE插件过程
  • Android DEX相关,ART加载OAT文件
  • laravel框架 - 安装初步使用学习 composer安装
  • API实战教程:使用身份证OCR识别API构建一个应用
  • 前端-layui动态渲染表格行列与复杂表头合并
  • IDM(Internet Download Manager)下载器2024最新版本如何下载?
  • 前端综合练手小项目
  • 接口优化1
  • 【无公网IP内网穿透】 搭建Emby媒体库服务器并远程访问「家庭私人影院」
  • QML android 采集手机传感器数据 并通过udp 发送
  • stableDiffusion安装
  • QT基础教程(QPushButton及信号与槽)
  • Android 实战项目分享(一)用Android Studio绘制贝塞尔曲线的艺术之旅
  • Windows系统关机后自动重启的解决方法
  • 微服务如何改变软件开发:实战经验与最佳实践分享
  • 安装深度(Deepin)系统
  • Leetcode: 645.错误的集合 题解【超详细】
  • 闲鱼自动化软件——筛选/发送系统 V22已经测试完毕
  • 数学建模__动态规划
  • 【IoT】生产制造:锅仔片上机做 SMT 加工吗?
  • Stable Diffusion代码简介
  • 操作系统的运行机制
  • 分布式事务解决方案之2PC
  • 发现某设备 adb shell ps 没有输出完整信息
  • qt模拟鼠标事件
  • Linux运维基础知识大全
  • 西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)
  • 负载均衡-ribbon源码解析
  • SideBar 侧边导航与内容区域交互重写【Ant Design Mobile】