首页 > 编程知识 正文

io多路复用技术分为三种,io多路复用的方式

时间:2023-05-06 06:30:44 阅读:231447 作者:2667

首先,多路复用(multiplexing) 是计算机里面很常见的一个概念,我觉得他的核心思想就是利用一组资源做很多件事。

常见的多路复用(multiplexing)除了网络编程里面的IO多路复用;还有计算机网络的时分多路复用,频分多路复用;还有操作系统里面的时间复用(Time multiplexing,指在多个用户之间安排连续可重用的资源如CPU ),空间复用(Space multiplexing ,将多用途资源分配给几个用户,如内存(虚拟内存),磁盘空间(文件系统))这里详见:https://sites.cs.ucsb.edu/~xhdwt/teaching/cs170/doc/cs170-01.pdf

以下来自:
I/O多路复用技术(multiplexing)是什么? - 用心阁的回答 - 知乎
https://www.zhihu.com/question/28594409/answer/74003996
下面说一下IO多路复用,IO多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。(PS:阻塞就是进程的一种状态,表示等待某个事件,如IO,对线程也一样)

这样在处理1000个连接时,只需要1个线程监控就绪状态,对就绪的每个连接开一个线程处理就可以了,这样需要的线程数大大减少,减少了内存开销和上下文切换的CPU开销。

实际上,IO复用函数的作用是:应用程序通过IO复用函数向内核注册一组事件,内核通过IO复用函数把其中的就绪事件通知给应用程序。


上图中,select/poll/epoll本身都是阻塞的,可以同时监听多个文件描述符,只要有一个文件描述符就绪,就立刻不阻塞

参考资料:

https://sites.cs.ucsb.edu/~xhdwt/teaching/cs170/doc/cs170-01.pdfI/O多路复用技术(multiplexing)是什么? - 用心阁的回答 - 知乎
https://www.zhihu.com/question/28594409/answer/74003996Linux高性能服务器 游双UNP 卷1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。