【网络编程系列】IO多路复用

阅读: 评论:0

【网络编程系列】IO多路复用

【网络编程系列】IO多路复用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝

✨✨ 欢迎订阅本专栏 ✨✨

博客目录

      • 什么是 IO 多路复用?
      • select 模型?
      • poll 模型?
      • epoll 模型?

什么是 IO 多路复用?

IO多路复用:一种同步的 IO 模型。利用 IO 多路复用模型可以实现一个线程监视多个文件句柄,一旦某个文件句柄就绪,就能够通知到对应应用程序进行相应的读写操作;没有文件句柄就绪时就会阻塞应用程序,从而释放出 CPU 资源

IO:在操作系统中,数据在内核态和用户态之间的读写操作
多路:大部分情况下是指多个 TCP 连接(多个 Socket 或者多个 Channel)
复用:一个或多个线程资源
IO多路复用:一个或多个线程处理多个 TCP 连接。无需创建和维护过多的进程/线程

实现 IO 多路复用的模型有三种:

  • select
  • poll
  • epoll

select 模型?

采用轮训加遍历的方式,在客户端操作服务器时,会创建三种文件描述符,简称 FD

分别是写描述符,读描述符,异常描述符.select 会阻塞和监视这三种文件描述符.等到有数据可读,可写,或者出异常,或者超时的时候,都会返回.返回后通过遍历 fdset(文件描述符集合),来找到就绪的 fd,然后去触发相应的 IO 操作.

优点:跨平台支持性好,几乎在所有的平台上支持
缺点:随着 FD 数量增多而导致性能下降。而操作系统对单个进程打开的 FD 数量是有限制的,一般默认是 1024 个

poll 模型?

采用轮训加遍历的方式,poll 模式使用链表的方式来存储 fd,优点是没有最大的 fd 的数量限制.缺点和 select 一样,采用轮训的方式来进行全盘扫描,随着 fd 数量的增加,导致性能下降

epoll 模型?

epoll 模型解决了 select 和 poll 因为吞吐量的增加而性能下降的问题.采用时间通知机制来触发 IO 操作.它没有 fd 个数的限制,而且从用户态拷贝到内核态只需要一次,因为它主要是通过调用系统底层的函数,来实现注册,激活 fd,这样大大提高了执行性能.主要是以下三个系统函数:

  • epoll_create():在系统启动时,去申请一个 B+树结构的文件系统,然后再返回 epoll 对象.也就是一个 fd 对象
  • epoll_ctl():在每新建一个连接的时候,会同步更新 epoll 对象中的 fd,并且去绑定一个 callback 函数,
  • epoll_wait():轮训所有的 callback 集合,并且去触发对应的 IO 操作

优点:将轮询改成了回调,大大提高了 CPU 执行效率,也不会随 FD 数量的增加而导致效率下降
缺点:只能在 Linux 下工作

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

本文发布于:2024-02-04 18:21:26,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170713531058231.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:多路   复用   网络编程   系列   IO
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23