同步和异步、阻塞与非阻塞的区别

1.同步和异步
同步和异步关注的是消息通信机制。
所谓同步,就是客户端在发出一个调用时,在没有得到结果之前,该调用不返回;但是一旦调用返回,就会得到返回值了。换句话说,就是由“调用者”主动等待这个调用结果。而异步正好相反,在发出调用之后,这个调用就直接返回了,并且没有返回结果。但是“被调用者”处理完调用之后,会将结果通过状态、通知或者回调函数来通知调用者。
这里举一个很好理解的例子:假如你正在某个地方寻找一个失散多年的大表哥,如果是同步机制,你打电话问下当地的警方有没有见过一个叫XX的人,这时警察会说:“你稍等一下,我帮你查下记录,但是别挂电话”。等过了一段时间,也许是10分钟,也许是一小时,警察把查询结果告诉你,此时再结束通话。如果是异步机制,警察会说:“你稍等一下,等我查询好了再给你打电话”,然后直接挂断电话。等警察查好了然后再回电给你,其实这里的“回电”就相当于回调函数。
2.阻塞和非阻塞
阻塞和非阻塞关注的是程序在等待调用结果(消息、返回值)时的状态。
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果后才会返回。非阻塞调用是指在不能在立刻得到结果之前,该调用不会阻塞当前线程。还是上面的例子,当你打电话向警察询问当地有没有一个叫XX的人时,如果是阻塞调用,那么你会一直守在电话旁边等结果,直到你等到警察的结果。如果是非阻塞调用,你会在得到警察结果之前你可以去干别的事情,当然你也要过几分钟时不时的向警察询问一下有没有结果。在这里阻塞与非阻塞与是否同步异步无关,也与警察回复你结果的方式无关。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值