鸟瞰 IO
志坚者,功名之柱也。登山不以艰险而止,则必臻乎峻岭。
1. 同步与异步
同步请求
方法 A 调用方法 B ,如果方法 B 的处理是同步的,那么在方法 B 处理完之前他不会通知方法 A 的,只有方法 B 处理完之后才会明确的通知方法 A。
异步请求
方法 A 调用 方法 B ,方法 B 的处理是异步的,那么方法 B 在接到请求后先给方法 A 一个返回值代表我已经接到请求了,然后异步的去处理,方法 B 处理完之后通过回调等方式再告诉方法 A。
综上所诉,同步和异步最大的区别就是被调用方的执行方式和返回时机。同步指的是被调用方做完事情之后再返回,异步指的是被调用方先返回,然后再做事情,做完之后再想办法通知调用方
2. 阻塞与非阻塞
生活常识举例
阻塞
比如你去蜜雪冰城买奶茶,如果你一直在等工作人员给你打奶茶期间什么都不做那么就是阻塞的状态
非阻塞
比如你去蜜雪冰城买奶茶,如果你在工作人员给你打奶茶期间又去做了别的事情比如去超时逛逛等那么就是非阻塞的状态
综上所诉,阻塞和非阻最大的区别就是在被调用方返回结果之前的这段时间内,调用方是否一直等待。阻塞指的是调用方一直等待别的事情什么都不做。非阻塞指的是调用方先去忙别的事情。
阻塞、非阻塞和同步、异步的区别
经过介绍阻塞与非阻塞和同步与异步其实强调的对象是不一样的。阻塞与非阻塞说的是调用者方,同步与异步说的是被调用方。
3. 图解 IO 分类
3.1 阻塞IO
3.1.1 同步阻塞
举例说明:
还是用去蜜雪冰城买奶茶的例子。在工作人员打好奶茶之前我们一直柜台等待,等着工作人员把奶茶打好,那么就是同步阻塞状态。
阻塞的工作模式 就是等待工作人员将奶茶打好。但是实际上在工作人员打好奶茶期间的时间段什么都没有做
3.2 非阻塞IO
3.2.1 同步非阻塞
举例说明:
还是用去蜜雪冰城买奶茶的例子。在工作人员打好奶茶之前我们可以做别的事情时不时的来看看奶茶打没打好,这就是同步非阻塞状态。
非阻塞的工作模式在工作人员打好奶茶期间的时间段什么都可以做
3.3 异步IO
举例说明:
还是用去蜜雪冰城买奶茶的例子。在工作人员打好奶茶之前我们去干别的事情,等工作人员把奶茶打好之后机器叫号1153号客户取餐,这种就是异步ID。
标签:异步,调用,IO,大白话,阻塞,同步,奶茶 来源: https://blog.csdn.net/weixin_38071259/article/details/122853922
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。