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

IO多路复用

select/poll/epoll

select

select的执行逻辑是收集传入的所有文件描述符创建一个bitmap,把这个bitmap拷贝到内核态让内核去判断哪个文件描述符可以被读写
缺点:

  1. bitmap只能使用一次,再次判断需要重新创建新的bitmap
  2. 用户态拷贝到内核态的开销较大
  3. 函数返回后还需要判断所有文件描述符是否被置位,复杂度为O(n)
  4. bitmap大小不能太大

poll

poll的逻辑是通过fds结构体来减少4个缺点的1,4


int poll(struct pollfd *fds, nfds_t nfds, int timeout);
//nfds表示一共有几个fd,timeout表示超时时间struct pollfd {int   fd;         /* file descriptor */short events;     /* requested events */short revents;    /* returned events */};

通过给revents来判断文件描述符是否准备好,如果revents==events则poll返回,在处理的时候需要把revents手动置为0来实现重复利用

epoll

epoll把这个bitmap或者是说revents放到内核态和用户态共享来实现减少缺点2,同时他会把可以操作的文件描述符放到整个位图的前几位实现解决缺点3

http://www.gsyq.cn/news/81981.html

相关文章:

  • 251210今天居然被妹妹鼓励到了
  • AI元人文构想:从统一描述语言到文明的操作系统
  • STM32-bootloader引导程序跳转机制笔记 - 教程
  • Debian 13安装rime中文输入法
  • 中介者模式
  • [LabVIEW随笔-10] -基础知识3
  • linux进线程
  • Claude使用体验
  • 适合 Linux 强者的方式 freertos学习
  • 真相:大量硬件场景 根本跑不了 Linux
  • 2025最新玻璃胶推荐!国内优质玻璃胶品牌权威榜单发布,资质与性能双优助力高效密封 - 全局中转站
  • AshPostgres 政策绕过漏洞:空原子更新操作可能触发副作用
  • Supabase 实战指南:从零开始搭建数据库、配置 Auth 并接入 Resend 邮件服务
  • 2025 最新水泥基渗透结晶型防水涂料厂家 TOP5 评测!技术创新 + 工程实证专业榜单发布,构筑混凝土长效防护屏障 - 全局中转站
  • python: 用os库判断进程是否在运行中?
  • 2025.12.10总结
  • Enhance European/American Repairs with OTOFIX D1 Plus 1-Year Update Subscription
  • [Git] [GitHub] 如何在将本地代码推送到github
  • 2025最新AWHFVC防腐厂家TOP5评测!混凝土防腐品牌年度榜单,技术创新+长效防护,守护工业基建安全防线 - 全局中转站
  • keil5下载安装教程详细步骤(附安装包)Keil MDK v5.40下载安装详细教程
  • One Year AUTEL MK808S Update Service: Enhance Diagnostics Repairs for EU/American Vehicles
  • 散修带你入门鸿蒙应用开发基础第五节:函数的定义与使用 - 鸿蒙
  • Unity 场景切换
  • 2025氢力守护!富氢水灌装水处理设备TOP5:高浓稳定促灌装 - 极欧测评
  • 2025最新防腐涂料及工程厂家TOP5评测!技术创新+工程实证权威榜单发布,守护工业设施长效安全 - 全局中转站
  • 移动端_设计师值得收藏的10个Mobile端UI组件库10个WEB端UI框架[转]
  • 用 ssldump 跟踪 tls 障碍
  • 12-10午夜盘思
  • 实用指南:Python + uiautomator2 手机自动化控制教程
  • Alientech KESS3 Slave 12-Month Subscription: Professional Diagnostics Tuning for Euro/American Cars