个人理解 作个笔记
IO模型分为五种
异步-同步
异步:发起请求,就可以干其它的事了,等待通知
同步:发起请求后,一直等到有结果
阻塞-非阻塞
阻塞:发起请求后,一直等到有结果
非阻塞:发起请求后,先去干其它事情,过一段时间再查看结果,如果没有结果,继续做其它的事
1.同步阻塞IO:应用请求一直等待返回结果
2.同步非阻塞IO:应用发起一堆请求,轮询每个请求的返回状态(与内核交互)
3.IO多路复用:应用将一堆请求发送,阻塞到select,当有数据准备好返回(交给内核处理) (netty使用IO多路复用模型)
4.信号驱动IO:预先告知内核,当有IO可用时,内核通知应用
5.异步IO:应用发起请求后,可以做其它的事了,等待内核将结果返回
同步非阻塞IO与IO复用区别
同步非阻塞:轮询内核查看状态,与内核交互性能下降
IO复用:将多个请求交给内核处理,速度快
下面是五种IO模型图
一、同步阻塞IO
二、同步非阻塞IO
三、IO复用
四、信号驱动IO
五、异步IO