什么是阻塞,非阻塞,同步,异步?

关注者
118
被浏览
10,348

6 个回答

举个打电话的例子:

阻塞/同步:打一个电话一直到有人接为止
非阻塞:打一个电话没人接,每隔10分钟再打一次,知道有人接为止
异步:打一个电话没人接,转到语音邮箱留言(注册),然后等待对方回电(call back)

看起来异步是最高效,充分利用资源,可以想像整个系统能支持大规模并发。但问题是调试很麻烦,不知道什么时候call back。
假如你要做两件事,烧水、刷牙
同步:你烧水,等水烧开了你再去刷牙
异步:你烧水,不等水烧开就去刷牙了,水烧开了会发出声音告诉你(callback),然后你再处理水烧开之后的事情
只要你是个正常人,都会选择第二种
当然也有特殊情况,那个人喜欢用热水刷牙