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

IO多路复用——epoll(20250307)

1. epoll       

优点:

  1. epoll创建内核事件表,不受到文件描述符上限限制    (红黑树)  O(logn)        
  2. epoll监听的事件表在内核中,直接在内核中监测事件效率高
  3. epoll会直接获得产生事件的文件描述符的信息,而不需要遍历检测 
  4. epoll既能工作在水平触发模式,也能工作在边沿触发模式

        
2. epoll模型

  1. epoll_create 创建epoll文件描述符集合
  2. epoll_ctl  添加关注的文件描述符
  3. epoll_wait 监控io事件
  4. epoll_ctl  从事件集合中删除完成的文件描述符

2.1 epoll_create

        int epoll_create(int size);
功能:
        创建一个监听事件表(内核中)
参数:
        size:监听事件最大个数
返回值:
        成功返回非负值:表示epoll事件表对象(句柄)
        失败返回-1 

2.2 epoll_ctl

        int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
功能:
        在监听事件表中新增一个事件
参数:
        epfd:事件表文件描述符 
        op:EPOLL_CTL_ADD        新增事件
        EPOLL_CTL_MOD        修改事件 
        EPOLL_CTL_DEL        删除事件
        fd:文件描述符 
        events:事件相关结构体
返回值:
        成功返回0 
        失败返回-1 

2.3 epoll_wait

      int epoll_wait(int epfd, struct epoll_event *events,
                      int maxevents, int timeout);
功能:
        监听事件表中的事件,并将产生的事件存放到结构体数组中
参数:
        epfd:事件表文件描述符
        events:存放结果事件结构体数组空间首地址 
        maxevents:最多存放事件个数
        timeout:超时时间
            -1:阻塞等待直到有事件发生 
返回值:
        成功返回产生事件个数
        失败返回-1 
        超时时间到达没有事件发生返回0

相关文章:

  • 关于Linux contOS 7 的防火墙
  • 蓝桥杯 之 回溯之充分剪枝
  • 深度学习优化算法全面解析:从理论到实践
  • PyTorch vs NumPy:核心区别与选择指南
  • wow-rag:task2-正式上路搞定模型
  • 红帆 iOffice M2 移动端密码爆破的渗透测试思路,绕过客户端实现Burpsuite批量跑,分享渗透思路,共建网络安全
  • 二维数组基础
  • BLEU评估指标
  • 静态程序分析
  • 网络安全和文档的关系
  • 【高项】信息系统项目管理师(五)项目范围管理【3分】
  • CSS 知识点总结1
  • 在ArcGIS中对图斑进行自上而下从左往右编号
  • 制造业数字化转型,汽车装备制造企业数字化转型案例,智能制造数字化传统制造业数字化制造业数字化转型案例
  • 【运维】服务器系统从centos7重装为ubuntu22.04
  • 医院本地化DeepSeek R1对接混合数据库技术实战方案研讨
  • 使用Python在Word中生成多种不同类型的图表
  • 2020年SCI1区TOP:自适应粒子群算法MPSO,深度解析+性能实测
  • AI智能代码疫苗技术,赋能数字化应用内生安全自免疫
  • QT:非模态使用WA_DeleteOnClose避免内存泄漏
  • 电影网站推广/电商sem是什么意思
  • 茂名专业网站建设公司/深圳网络推广seo软件
  • 电商思维做招聘网站/网店代运营的套路
  • 闲鱼钓鱼网站怎么做/360优化大师
  • 科技有限公司可以做网站建设吗/百度图片搜索网页版
  • 国外做饰品批发网站/seo搜索引擎优化工资薪酬