io模型

1.四种模型

同步阻塞,同步非阻塞,异步阻塞,异步非阻塞

2.同步异步之说

是线程之间调用的说法
调用者与被调用者,它们是线程之间的关系
两个线程要么是同步,要么是异步

同步操作:调用线程需要等待被调用线程返回结果,才会进行下一步
异步操作:调用线程不需要等待被调用线程返回结果,被调用线程一版依赖事件,回调等机制来通知调用者结果

3.阻塞非阻塞之说(一版说的都是IO)

阻塞与非阻塞,说的是线程内的关系
程序在等待调用结果(消息,返回值,IO返回数据)时的状态:
阻塞:调用结果返回前,当前线程被挂起,调用线程得到结果后才会返回
非阻塞:不能立刻得到结果之前,该调用不会阻塞当前线程。

什么是阻塞?
阻塞本质上是操作系统将线程状态变成阻塞,剥夺线程的CPU使用权,线程只有被唤醒(状态变为可执行)后,操作系统才会重新调度执行他

4.模型详细说明

同步阻塞IO:
发送方发送请求之后一直等待响应。
接收方处理请求时进行的IO操作如果不能马上等到返回结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。

同步非阻塞IO:
发送方发送请求之后,一直等待响应。
接受方处理请求时进行的IO操作如果不能马上的得到结果,就立即返回,取做其他事情。
但是由于没有得到请求处理结果,不响应发送方,发送方一直等待。
当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方,发送方才进入下一次请求过程。(实际不应用)

异步阻塞IO:
发送方向接收方请求后,不等待响应,可以继续其他工作。
接收方处理请求时进行IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作。 (实际不应用)

异步非阻塞IO:
发送方向接收方请求后,不等待响应,可以继续其他工作。
接收方处理请求时进行IO操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。
当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。(效率最高)

posted @   SpecialSpeculator  阅读(84)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示