关于同步异步、阻塞非阻塞的理解

之前看到一个用来形容同步异步、阻塞非阻塞的比喻,感觉非常形象生动,这里把它记录下来。

场景:

你想买一本书,于是你给书店老板打电话询问,老板查询需要花费一段时间,帮你查询好以后告诉你结果,即书店有没有这本书。


解决方式:
一、同步

你给老板打通了电话,并一直等待该事件的结果,老板帮你查询的过程中不断电话,得到结果以后挂电话。


二、异步

你打电话告诉了老板你的目的以后,挂掉电话。老板查询到结果会打电话通知你。


三、阻塞

你打电话以后,自己会被“挂起”(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行),直到结果返回以后释放。


四、非阻塞

打电话以后,自己就去一边做别的事情了,不过需要时不时来检查一下结果是否返回。


总结:

1.从以上场景来看,同步异步的重点是在请求结果的返回方式不同,同步是调用者在主动等待这个结果,异步是被调用者通过某种方式来通知调用者结果。

2.阻塞非阻塞关注的是在调用请求发起以后的过程中,调用者即“我”的状态。

3.有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。

4.同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞!
阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值