如果第二次看到我的文章,欢迎关注我的个人原创公众号「跨界架构师」哦~每周五11:45 按时送达。当然了,也会时不时加个餐~
其实并不是如此,Z哥我这次就想来帮你搞清楚这个问题。
同步与阻塞/非阻塞
还是拿我们上一篇中提到的排队买奶茶这个例子,看看为什么说是「同步」+「阻塞」。
怎么让「同步」也能不阻塞呢?
异步与阻塞/非阻塞
奶茶店分了点单区和取餐区之后,做好的饮料就只能从取餐区拿,也意味着接待你进行点单的人并不是实际做奶茶的人。这个时候你会拿到一张取餐号,然后老老实实的去取餐区等着,而不是“占着xx不xx”。
但如果你不着急,就在边上开一局吃鸡,等着里面做好了叫号,到你号码了再去拿。这就是「异步」+「非阻塞」。因为这个事情是对方(里面的店员)触发完成的,这就是「回调」,是对你之前的“点单”请求进行的响应。一来一回完成一个完整的交互。
阻塞不阻塞是你自己决定的,你可以阻塞啊。比如,你等的“回调”时候发现没带手机,玩不了吃鸡,那只能傻傻的在那等着,啥也干不了。如此,这个过程虽然还是「异步」的,但对你来说就是「阻塞」的。
工作中的同步/异步&阻塞/非阻塞
其实你仔细想一下就会发现,很多知名的框架,都是「同步」+「非阻塞」的,为什么呢?因为你可以继续像「同步」一样编写代码,但是可以享受到类似「异步」所能带来的更好的性能,何乐而不为?
我们在设计对外的api的时候也可以使用这种模式,降低一些耗时接口调用所产生的影响。这个阮一峰老师已经写的非常清楚了,我就直接贴个链接:http://www.ruanyifeng.com/blog/2018/12/async-api-design.html。
「异步」+「非阻塞」就多了。任何你看到callback关键字的框架都是。
总结
这次呢,Z哥先通过同步/异步、阻塞/非阻塞之间形成的4种组合形式,聊了下它们到底是怎么回事。
最后送你一个记住这4个概念的最好办法。
- 同步阻塞:你干吧,我看着你干
- 同步非阻塞:你干吧,我每隔5分钟来看看
- 异步阻塞:你干吧,好了告诉我,我等着
- 异步非阻塞:你干吧,好了告诉我,我先去忙别的了
作者:Zachary
出处:www.cnblogs.com/Zachary-Fan…
如果你喜欢这篇文章,可以点一下左侧的「大拇指」哦~。
这样可以给我一点反馈。: )
谢谢你的举手之劳。
▶关于作者:张帆(Zachary,个人微信号:Zachary-ZF)。坚持用心打磨每一篇高质量原创。本文首发于公众号:「跨界架构师」(ID:Zachary_ZF)。<-- 点击后阅读热门文章
定期发表原创内容:架构设计丨分布式系统丨产品丨运营丨一些思考。
如果你是初级程序员,想提升但不知道如何下手。又或者做程序员多年,陷入了一些瓶颈想拓宽一下视野。欢迎关注我的公众号「跨界架构师」,回复「技术」,送你一份我长期收集和整理的思维导图。
如果你是运营,面对不断变化的市场束手无策。又或者想了解主流的运营策略,以丰富自己的“仓库”。欢迎关注我的公众号「跨界架构师」,回复「运营」,送你一份我长期收集和整理的思维导图。