IO多路复用技术(事件驱动模型)to be continued

IO多路复用技术,是为了解决传统同步阻塞IO模式下,服务器的每个线程(进程)只能给一个Client提供服务的问题,避免服务器端创建大量线程(占用大量内存、线程切换开销)的问题。要讨论这个问题,我们先看下常见IO模式有哪些。

IO模型分类

先来了解下同步、异步,阻塞、非阻塞的概念。

同步异步
同步、异步主要是指用户程序和 内核 的交互模式。
同步:用户程序触发IO操作后,一直通过等待或轮询的方式去检查内核IO操作是否就绪,直到IO就绪。
异步:用户程序触发IO操作后,干其他事情去了,当内核IO操作就绪后,内核把数据写入用户Buffer。

从代码实现表现来看,IO操作后,同步模式下,用户需要自己不断去轮询内核获取结果,而异步模式下内核会回写数据到用户Buffer。

阻塞非阻塞
阻塞非阻塞,是在程序访问IO的时候,根据IO操作的就绪状态采取不同处理方式。
阻塞:当程序试图读IO进行读写操作时,如果暂时没有可读数据或者不可写,程序就进度等待状态,直到可读或可写为止。
非阻塞:当程序试图读IO进行读写操作时,如果无可读数据或不可写,程序马上返回,而不会等待。

从代码实现表现来看,IO操作后,阻塞模式下,方法挂起不返回,知道IO就绪操作成功,而非阻塞模式不等的IO就绪,方法直接返回。

你可能感兴趣的:(io,阻塞,异步io)