首页 >> 大全

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

2023-12-04 大全 22 作者:考证青年

博客目录

什么是 IO 多路复用?

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

IO:在操作系统中,数据在内核态和用户态之间的读写操作

多路:大部分情况下是指多个 TCP 连接(多个 或者多个 )

复用:一个或多个线程资源

IO多路复用:一个或多个线程处理多个 TCP 连接。无需创建和维护过多的进程/线程

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

89efb25035d1c40d1a91d20d36fd2817

模型?

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

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

优点:跨平台支持性好,几乎在所有的平台上支持

缺点:随着 FD 数量增多而导致性能下降。而操作系统对单个进程打开的 FD 数量是有限制的,一般默认是 1024 个

poll 模型?

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

epoll 模型?

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

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

缺点:只能在 Linux 下工作

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

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

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

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了