码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 就挺好。

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

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

  • 相关阅读:
    《web课程设计》用HTML CSS做一个简洁、漂亮的个人博客网站
    为了 GitHub 问题票,开发者做了一套小票打印机解决方案
    国内较好的iPaaS供应商有哪些?
    【图像检测-裂缝识别】基于计算机实现断裂裂缝识别拼接附matlab代码
    离散对数问题(DLP) && Diffie-Hellman问题(DHP)
    WEB应用防火墙是什么,数据库被篡改了怎么办,数据泄漏了用什么防
    04-react基础知识-路由
    取多条数据相同用户时间最小的那条数据
    海外媒体发稿:如何利用8种出口贸易媒体发稿实现销售突破-华媒舍
    【Vue】模块基本语法「上篇」
  • 原文地址:https://blog.csdn.net/dog250/article/details/132907332
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号