同步、异步、阻塞、非阻塞、IO模型的理解

同步、异步、阻塞、非阻塞,以及IO模型的理解 同步和异步 同步 就是你知道你什么时候在做什么,做完一件事情再做下一件事情,因此主动权在自己手里。比如通过等待或轮询,你在某个时间点总是知道结果是怎样的(有数据还是没数据等)。 异步 就是你不知道什么时候会发生什么。比如你注册了多个回调函数,你不知道什么时候会被调用以及被调用的是哪一个回调函数。 阻塞和非阻塞 阻塞:一个调用过程必须完成才返回。对于IO操作,如果IO没有准备好,读取或... 阅读详情

文字虽多,只要你一步一步往下看就能理解。
概念:
1.同步:调用发出后,调用者要一直等待返回结果,得到通知后,才能进行后续的执行;
2.异步:调用发出后,调用者不能立刻得到返回结果,执行部件在完成后,通过状态、通知和回调方式来通知调用者;
3.阻塞:调用结果返回前,当前线程被挂起,一直处于等待消息通知,不能够执行其他业务,只有在得到结果后才会返回;
4.非阻塞:在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回(不是想要的结果)。

通知的方式:
1.状态:即监听被调用者的状态(轮询),调用者需要每隔一定时间检查一次,效率会很低。
2.通知:当被调用者执行完成后,发出通知告知调用者,无需消耗太多性能。
3.回调:与通知类似,当被调用者执行完成后,会调用调用者提供的回调函数
使用哪一种通知机制,依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。

同步/异步 和 阻塞/非阻塞的区别:
可以理解为关注的对象不同:
1.同步/异步:数据未就绪,是否等待返回结果;
2.阻塞/非阻塞:数据未就绪,是否要阻塞线程;

场景比喻:
我去银行办理业务,可能会有两种方式:
1.选择排队等候;(同步)
2.选择取自己的候码牌,轮到我时由柜台的人通知我去办理业务;(异步)

就有以下4种模式:
1.如果选择排队(同步),且排队的时什么都不干(线程被挂起,什么都干不了),是同步阻塞模型;
2.如果选择排队(同步),但排队的同时做与办银行业务无关的事情,比如玩手机,(线程未被挂起,还可以干其他的事)是同步非阻塞模型;
3.如果选择候码牌,坐在位置上等柜台叫号(状态、通知和回调),但是坐在位置上什么都不干(线程被挂起,什么都干不了),这是异步阻塞模型;
4.如果选择候码牌,坐在位置上等柜台叫号(状态、通知和回调),但坐着的同时还玩手机打游戏(线程没有被挂起,还可以干其他事情),这是异步非阻

深入理解网络IO模型:从同步/异步到阻塞/非阻塞IO 网络IO,即网络输入/输出,是计算机网络通信的基础。在应用程序中,IO模型描述了程序如何与外部世界进行数据交换。IO模型的选择直接影响到程序设计的复杂度以及性能表现。同步IO(Synchronous IO)是指在发出一个调用时,在没有得到结果之前,该调用就不返回。也就是说,它必须一件件地做,一个请求一个请求地执行。只有当前一个请求处理完毕后,才处理下一个请求。同步IO的执行流程通常涉及以下几个步骤:1. 程序发起IO调用。2. 系统内核等待数据准备完成。 阅读详情

相关推荐

MAX96712解串器MIPI CSI-2输出配置全解析:从Video Pipe映射到DPLL速率设置(以4路YUV422摄像头为例)

本文详细解析了MAX96712解串器在MIPI CSI-2输出配置中的关键步骤,包括Video Pipe映射、寄存器配置和DPLL速率设置。通过具体示例和代码片段,帮助开发者优化4路YUV422摄像头系统的图像传输稳定性和画质表现,适用于汽车电子和工业视觉应用。

weixin_30776273的博客 433

安卓集成华为HMS Scankit实现自定义扫码功能

实现扫码功能 使用的是集成华为扫描的SDK,UI界面借鉴的是谷歌官方的Zxing项目中的自定义view,两者结合实现。 先上效果图: 先在项目根级别(build.gradle)当中配置HMS Core SDK的Maven仓地址。 // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huaw

qq_47625961的博客 5512

新手别怕!用‘东北天’和‘右前上’坐标系,5分钟搞懂惯性导航姿态矩阵(含Python验证代码)

本文通过‘东北天(ENU)’和‘右前上(RFU)’坐标系,详细解析惯性导航中的姿态矩阵概念。包含Python代码验证,帮助新手快速理解坐标变换、欧拉角及旋转矩阵的构建与应用,特别强调有限转动不可交换性与无限转动次序无关的区别。

weixin_29062255的博客 332

Java判断地图坐标(经度,纬度)是否在多边形区域或圆形区域内

​欢迎光临我的博客查看最新文章:在地图上,可以使用经纬度确定一个位置,如上海体育场(121.449391,31.188228),如果知道了2个地点的经纬度,我们就能在地图上找到其位置及2点的距离,百度地图或高德地图提供了相应的服务;如果将多个坐标点连成多边形区域,如何判断某个坐标点是否在多边形区域内,如下工具类。

river106的博客 3943

Coze:手把手教你搭建 小红书二创 智能体

前一篇 “” ,讲了如何针对需求进行拆解,并拆解 ”小红书二创“ 智能体,分为四个内容模块。通过上述步骤,开始一步一步构建 “小红书二创” 智能体。用来测试的小红书地址:http://xhslink.com/a/quxWEDAj3J48。

保持敏感!保持学习! 1436

FP16、BF16、INT8、INT4精度模型加载所需显存以及硬件适配的分析

本文主要介绍了FP16、INT8、INT4精度模型加载占用显存大小的分析,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 模型加载显存占用大小 3. 不同精度是否与硬件适配

herosunly的博客 23万+

【AUTOSAR-DEM】-2.4-APP SWC如何读取MIL灯状态以及配置MIL灯

该篇博文将告诉您: MIL(Malfunction Indicator Lamp/Light)灯的点灯和灭灯过程; DEM模块如何配置MIL灯; APP SWC如何获取MIL灯状态。

「汽车电子助手」的博客 1712

2、OTA/gm - C滤波器的架构与设计

本文深入探讨了OTA/gm-C滤波器的两种主要设计方法:基于LC梯形网络的设计与多环反馈(MLF)结构。前者包括元件替代法和信号模拟法,分别通过电感替代或电路方程模拟实现低敏感度滤波器;后者通过积分器级联与反馈网络合成全极点或含任意传输零点的传递函数。文中详细分析了不同结构如IFLF和LF的反馈矩阵、传递函数及性能差异,指出LF结构在敏感度、噪声和整体性能上的优势。同时比较了各类方法的优缺点及适用场景,为高频连续时间集成电路滤波器的设计提供了系统性指导。

fanta的博客 137

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: Android ButterKnife配置及使用
下一篇: 循环、迭代、递归、遍历的概念
sunyFS
博客等级 码龄7年 21粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值