- 12
- 0
- 约3.72千字
- 约 4页
- 2023-07-29 发布于湖北
- 举报
五种IO模型详解及优缺点
阻塞IO、⾮阻塞IO、多路复⽤IO、信号驱动IO以及异步IO。下⾯就 别来介绍⼀下这5种IO模型的异同。
1.阻塞IO模型
最传统的⼀种IO模型,即在读写数据过程中会发⽣阻塞现象。当⽤户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会
等待数据就绪,⽽⽤户线程就会处于阻塞状态,⽤户线程交出CPU。当数据就绪之后,内核会将数据拷贝到⽤户线程,并返回结果给⽤户线
程,⽤户线程才解除block状态。(阻塞模式下⽤户进程需要等待两次,⼀次为等待io中的数据就绪,⼀次是等待内核把数据拷贝到⽤户空间)
如果数据没有就绪,就会⼀直阻塞在read⽅法。具体流程如下图所⽰ :
2.⾮阻塞IO模型
阻塞IO模式有⼀个缺点是每次io事件没有就绪时,⽤户进程需要⼀直等待,使得⽤户进程需要⼀直等待。因此引⼊了⾮阻塞IO,当⽤户
线程发起⼀个read操作后,并不需要等待,⽽是马上就得到了⼀个结果。如果结果是⼀个error时,它就知道数据还没有准备好,于是就返
回到⽤户进程去执⾏其他任务,等过⼀段时间后在去查看数据是否准备好
原创力文档

文档评论(0)