码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Epoller


    目录

    • epoll介绍
    • Epoller

    epoll介绍

    • 高并发服务器一定需要好的IO模型,去缓解IO带来的等待时间。Linux下采用的是epoll多路转接。epoll多路转接在处理海量数据的并发时,效率远高于poll,select。
    • epoll内部采用红黑树管理注册事件,通过回调机制和就绪队列返回就绪事件。
    • epoll模型总共分为3个函数。epoll_create创建epoll模型,返回一个句柄代指你要操作的epoll模型。
    • epoll_ctl,该函数有多种用处。增加,删除,修改事件。
    • epoll_wait,等待事件就绪,该函数会返回一个就绪队列和就绪队列的长度,只需要遍历该就绪队列处理事件即可。epoll保证所有在就绪队列中的事件都已就绪,不必再像poll,select那样轮询检查。
    epoll_create();
    
    epoll_ctl();
    
    epoll_wait();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在阅读该项目前,读者应对epoll模型及调用了如指掌。

    Epoller

    该类非常简单,我们只需要记录epoll模型的句柄,和epoll_wait返回的就绪事件集合即可。

    Epoller{
    private:
    int epollfd_;
    std::vector<struct epoll_event> events_;  //存储从epoll_wait返回的事件
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 提供增加,修改和删除事件的函数。
    • 提供等待函数,就是封装了epoll_wait而已。
    • 提供获得对应下标的fd和event的功能。
    bool AddFd(int fd, uint32_t events);
    
    bool ModFd(int fd, uint32_t events);
    
    bool DelFd(int fd);
    
    int Wait(int timeoutMS = -1);
    
    int GetEventFd(size_t i) const;
    
    uint32_t GetEvents(size_t i) const;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    MySQL如何优雅处理批量新增和更新?ON DUPLICATE KEY UPDATE用它!
    自动驾驶开源数据集汇总
    2022年的最后100天渡德赋能网伴天下,修炼本领,不断学习|网安伴
    项目文章 | 总石油烃-重金属污染与土壤微生态系统:细菌多样性、组装和生态功能研究
    多线程与并发 - 常见的几种锁的实现方式
    深入理解 happens-before 原则
    基于javaweb的零食商城系统(java+ssm+jsp+mysql+easyui)
    使用TensorFlow构建,绘制和解释人工神经网络
    企架布道:中电金信应邀出席2023佛山敏捷之旅暨DevOps Meetup
    图、图的遍历、最小生成树、最短路径
  • 原文地址:https://blog.csdn.net/qq_53558968/article/details/126090235
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号