当前位置: 首页 > 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.jsqmd.com/news/71448/

相关文章:

  • 跟思兼学Klipper(39.1)解决 QIDI Q2 主板散热风扇开机即转、待机不停的风扇噪音问题
  • 251210今天居然被妹妹鼓励到了
  • One Year XTOOL X100 PADS Update Service: Keep Your Tool Updated for EU/US Vehicles
  • [Flink] Flink 安装部署篇
  • AI元人文构想:从统一描述语言到文明的操作系统
  • 2025辽宁法律服务律所TOP5评测!专业团队+权威认证榜单发布,全面守护您的合法权益 - 全局中转站
  • US$94.05 One Year Update Service for Xtool D7 / D7S / D7W
  • Unlock Full VOLVO Diagnostic Capabilities with VXDIAG Authorization License for VCX SE Multi Series
  • 洛谷P10953 逃不掉的路 题解 边双连通分量(缩点)+ LCA
  • STM32-bootloader引导程序跳转机制笔记 - 教程
  • 深入解析:心率变异性计算算法(HRV)
  • Unlock Super Remote Diagnosis on Launch Smartlink C with 1-Time Activation Card
  • .gitignore 的匹配规则
  • 无法在Debian13 VSCode中使用fcitx5输入中文
  • python基础
  • Debian 13安装rime中文输入法
  • 中介者模式
  • [LabVIEW随笔-10] -基础知识3
  • 0_C++的基础语法(上)
  • Codeforces Round 1069 (Div. 2)
  • Old-Java类集框架随笔
  • linux进线程
  • 第51天(中等题 数据结构)
  • 对《AI元人文构想:从“伦理规范”向“技术合标”的范式扩展》的评价与展望(深化版)
  • Claude使用体验
  • 适合 Linux 强者的方式 freertos学习
  • 网络故障具体排错
  • Git 中文文件名显示为转义码(乱码)的解决方案
  • 真相:大量硬件场景 根本跑不了 Linux
  • Windows-GameBar-ErrorLog