同步异步,阻塞和非阻塞

同步和异步,阻塞和非阻塞,根据字面意思也能够分出差别,但是同步,异步阻塞,非阻塞很容易混淆,那么同步是不是就是阻塞,异步是不是就是非阻塞?

答案是否定的,虽然同步意味着阻塞,异步意味着不阻塞,但是面对的对象不同,下面是摘自博客园其中一篇博客对同步、异步,阻塞、非阻塞的定义:

同步、异步:

  • 概念:消息的通知机制
  • 解释:涉及到IO通知机制;所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果。阻塞、非阻塞:

阻塞、非阻塞

  • 概念:程序等待调用结果时的状态
  • 解释:涉及到CPU线程调度;所谓阻塞,就是调用结果返回之前,该执行线程会被挂起,不释放CPU执行权,线程不能做其它事情,只能等待,只有等到调用结果返回了,才能接着往下执行;所谓非阻塞,就是在没有获取调用结果时,不是一直等待,线程可以往下执行,如果是同步的,通过轮询的方式检查有没有调用结果返回,如果是异步的,会通知回调。

根据概念,他们讲的就不是同一件事情。

同步和异步是用来形容消息的通知机制,通信机制就是一个Rule,一个规则,同步就是严格按照先后顺序去做事情,比如有时候我们的事情必须一件一件去做,我先开发原型界面,再前后端联调——也就是说我的开发流程这个Rule,我在没有开发完原型界面之前是不会跟后端去联调的,这就是同步;而异步在生活中就很多了,我在家里放了一只老鼠夹,我不可能在旁边看着老鼠上钩,我可以去做其他的事情,直到有一天,老鼠夹发出警报了(这是一个连着app的老鼠夹23333),我发现有老鼠上钩了,这个就是异步。所以它们针对的是Rule,前端开发流程,老鼠夹夹老鼠,这个都是一种Rule,通信机制。

阻塞和非阻塞是用来形容通信一方的状态,比如我打滴滴,师傅接单了,1分钟就到,我站在路边,时刻关注着手机,我的这个状态就是阻塞状态,而如果要10分钟才到,这个时候外面又很热,那我先去买个可乐喝一下,时不时的看一下手机,看看是不是师傅快到了,这个就是非阻塞。

那么为什么会出现阻塞和非阻塞呢?就是因为同步机制造成的,如果是异步,最后事情好了,通知我一声,good!!!我阻塞在那里干嘛,我该干嘛干嘛。但是同步的话我就没办法了,只能等呗,时间少一点无所谓的,那时间一长呢?做点其他的事情呗,时不时的看看后续情况,提高效率。

所以同步都伴随着阻塞和非阻塞,以后再也不要把同步异步,阻塞、非阻塞搞混了。

抛砖引玉,望提出宝贵意见。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
同步非阻塞异步非阻塞是两种不同的函数调用方式。 同步非阻塞是指在发起函数调用后,调用方不会等待函数的结果返回,而是立即继续执行后续的代码。这意味着调用方无需等待函数的执行结果,可以继续处理其他任务。当函数执行完毕后,调用方可以通过轮询或者回调等方式来获取函数的结果。同步非阻塞的优点是能够提高系统的并发性和响应性。 异步非阻塞是指在发起函数调用后,调用方也不会等待函数的结果返回,但是与同步非阻塞不同的是,异步非阻塞会通过回调、事件通知等方式来通知调用方函数的执行结果。调用方可以继续执行其他任务,并在合适的时机处理函数的返回结果。异步非阻塞的优点是能够提高系统的并发性和性能,减少资源的浪费。 总结来说,同步非阻塞异步非阻塞都是在函数调用时不会发生线程阻塞的情况下继续执行后续代码,但区别在于同步非阻塞需要主动轮询或回调来获取函数的结果,而异步非阻塞则通过回调或事件通知等方式传递函数的执行结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深入理解同步阻塞同步非阻塞异步阻塞异步非阻塞](https://blog.csdn.net/wangpaiblog/article/details/117236684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值