什么是IO多路复用?为什么需要IO多路复用?

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

常见的多路复用(multiplexing)除了网络编程里面的IO多路复用;还有计算机网络的时分多路复用,频分多路复用;还有操作系统里面的时间复用(Time multiplexing,指在多个用户之间安排连续可重用的资源如CPU ),空间复用(Space multiplexing ,将多用途资源分配给几个用户,如内存(虚拟内存),磁盘空间(文件系统))这里详见:https://sites.cs.ucsb.edu/~chris/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复用函数把其中的就绪事件通知给应用程序。

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

参考资料:

  1. https://sites.cs.ucsb.edu/~chris/teaching/cs170/doc/cs170-01.pdf
  2. I/O多路复用技术(multiplexing)是什么? - 用心阁的回答 - 知乎
    https://www.zhihu.com/question/28594409/answer/74003996
  3. Linux高性能服务器 游双
  4. UNP 卷1
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值