软件系统架构通俗理解之一:同步、异步、阻塞、非阻塞

一个老板想开个饭店,于是就招了1个厨师、1个服务员,就开张了。

开张后,有零星的客人来了,一个客人进来后,一个服务员接待了,客人点完菜后,这个服务员把菜单给厨师,然后就坐等厨师做完菜。如果这个服务员一直等着菜做完了再端给客人,这就是“阻塞”。阻塞的原因就是因为做菜是一定要点时间的(就像IO操作),这是没办法的。阻塞的坏处就是浪费资源,因为第二个客人进来,就没有服务员接待了。

这时老板看到客人进来没人接待,觉得这不行啊,于是跟服务员说你不要一直等厨师做完菜啊,把菜单给厨师后你就去前面接待客人。于是服务员点完餐后就去前台接待客人了,然后过一段时间就去看下厨师菜做完了没有,做完了就把菜端给客人。这就叫“同步非阻塞”

过了一段时间,老板一看,这服务员又要接待客人又要时不时跑到后台看下菜做好没有,太忙了,有时候客人还是没有被接待到。于是,老板又让服务员只负责接待客人,厨师做好菜了就喊服务员一嗓子,然后服务员再把菜端给客人。这就叫 “异步非阻塞”
如果这个服务员最近身体不好,不想多动弹,接待完客人后就等着厨师给自己通知,也不再去接待下一个客人,这就是 “异步阻塞”。当然,这种情况一般是不会存在的,老板肯定看不下去,这是没意义的等待。所以,异步一般是配合非阻塞时出现的。
总的来说,阻塞和非阻塞描述的一种状态,即你是等着还是没等;同步异步描述的是一种沟通(通讯)方式,是你主动问别人,还是别人通知你。同步设计一般就会造成等待阻塞或浪费轮循资源,因为别人不回答你就得等着或者隔段时间就问一下。异步设计一般会做成非阻塞的,因为别人会主动通知你,你就不用等待。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值