I/O 多路复用底层原理第一部分:五种I/O模型 _
发布时间
阅读量:
阅读量
为了深入理解I/O多路复用机制及其存在的弊端,并且以刨根问底的精神,在这里我们先回顾了Unix网络编程中的五种IO模型。
- 阻塞式输入输出 - Blocking IO
- 非阻塞式输入输出 - NoneBlocking IO
- IO多路复用 - IO多路复用
- 基于信号驱动的输入输出 - signal driven IO
- 异步输入输出 - asynchronous IO
Unix网络编程中的五种IO模型
阻塞IO - Blocking IO
最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。
一旦用户线程发起一个IO请求之后,随后内核检查数据是否已就绪.如果此时系统未准备好,则内核将暂时等待直至数据准备好.这使得该用户的主线程进入阻塞状态.等到数据传输完毕后,主程序将从内存中复制所需的数据并返回处理结果,从而释放CPU资源.
可能有些人会认为采用多线 thread 加上阻塞 IO 是提高效率的一种常用方法。
然而,在这种架构中,默认情况下每个 socket 会绑定到一个线程上。
这会导致大量的资源被占用。
尤其是当存在长时间保持连接的状态时,
这种配置可能导致后续会有大量新连接请求到来的情况下,
性能出现瓶颈。
非阻塞IO - NoneBlocking
全部评论 (0)
还没有任何评论哟~
