同步/异步和阻塞/非阻塞

什么是同步和异步?

在一本书上看到过一个例子:在食堂打饭,排队点菜。点完菜之后,食堂师傅开始为你准备你所点的东西,这需要花费一定的时间。在这段时间内,如果排在你后面的人一直在等待你取走自己的东西后才能开始点菜,那么这就是同步;但如果这段时间内,你在旁边等待自己的东西,食堂窗口可以接着处理排在你后面的人的点菜行为的话,这就是叫做异步。
那么更准确些说什么是异步和同步呢?如上面例子,食堂的窗口是一个服务,而排队的人都是服务的调用者,同步和异步就是描述这个服务调用的机制,或者说服务对请求的处理机制。

什么是阻塞和非阻塞?

接着上面的例子,当你点完菜等待师傅准备你的菜的过程中,你在一旁等待。此时你是服务的调用者,你在调用打菜服务以后只能等待,如果有其他的事情要干,而又不能干其他的事情,那么这个时候对你本身而言你就是处于一个阻塞的状态,但如果这段时间里,你可以去买饮料等其他东西,等到师傅将菜准备好后叫号再来取(这就是程序中的事件通知),那么你这个人就处于一个非阻塞的状态。
可见,阻塞和非阻塞是用来描述服务的调用者在调用服务后的状态的。

同步/异步和阻塞/非阻塞的关系

上面讲述了同步/异步和阻塞/非阻塞的概念,那么他们之间有什么关系呢?
事实上除了同步阻塞、同步非阻塞、异步阻塞、异步非阻塞都有可能发生,要看实际的服务机制和事务。

看到别人写的很贴切的例子:http://www.cnblogs.com/jogger/archive/2012/09/27/2705386.html


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值