什么是IO多路复用?为什么需要IO多路复用?
什么是IO多路复用?为什么需要IO多路复用?
-----
网友解答:
-----
首先,多路复用(multiplexing) 是计算机里面很常见的一个概念,我觉得他的核心思想就是利用一组资源做很多件事。
常见的多路复用(multiplexing)除了网络编程里面的IO多路复用;还有计算机网络的时分多路复用,频分多路复用;还有操作系统里面的时间复用(Time multiplexing,指在多个用户之间安排连续可重用的资源如CPU ),空间复用(Space multiplexing ,将多用途资源分配给几个用户,如内存(虚拟内存),磁盘空间(文件系统))
以下来自:
I/O多路复用技术(multiplexing)是什么?
下面说一下IO多路复用,IO多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。开一个线程处理就可以了,这样需要的线程数大大减少,减少了内存开销和上下文(PS:阻塞就是进程的一种状态,表示等待某个事件,如IO,对线程也一样)
这样在处理1000个连接时,只需要1个线程监控就绪状态,对就绪的每个连接切换的CPU开销。
实际上,IO复用函数的作用是:应用程序通过IO复用函数向内核注册一组事件,内核通过IO复用函数把其中的就绪事件通知给应用程序。
上图中,select/poll/epoll本身都是阻塞的,可以同时监听多个文件描述符,只要有一个文件描述符就绪,就立刻不阻塞。
------------------
推荐阅读:
雷克萨斯Rx300现在入手是不是时候?请懂行的提点建议吧,谢谢?
上一篇:得克萨斯州就脱离美国举行全民公投,如果美国解体了会怎么样?
下一篇: 金陵十二钗正册都有谁?