同步异步 | 阻塞非阻塞

本贴最后更新于 1480 天前,其中的信息可能已经时过境迁

同步与异步

同步与异步描述的是被调用方的行为,如 A 调用 B:

  • 如果是同步,B 在接到 A 的调用后,会立即执行要做的事。A 的本次调用可以得到结果。
  • 如果是异步,B 在接到 A 的调用后,不保证会立即执行要做的事,但是保证会去做,B 在做好了之后就会去通知 A。A 的本次调用得不到结果,但是 B 执行完后会去通知 A。

阻塞与非阻塞

阻塞与非阻塞描述的是调用方的行为 ,如 A 调用 B:

  • 如果是阻塞,A 在发出调用后,要一直等待,等着 B 返回结果。
  • 如果是非阻塞,A 在发出调用后,不需要等待,可以去做自己的事。

同步异步,阻塞,非阻塞之间的区别

同步异步是描述被调用方的,阻塞非阻塞是描述调用方的。同步不一定阻塞,异步也不一定非阻塞。没有必然联系。
举个简单的例子,老王烧水。

  1. 老王把水壶放到水上,一直在水壶旁等着水开。(同步阻塞)
  2. 老王把水壶放到水上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
  3. 老王把响水壶放到火上,一直在水壶旁等着水开。(异步阻塞)
  4. 老王把响水壶放到火上,去客厅看电视,水壶响之前不会再去看它了,响了再去拿水壶。(异步非阻塞)

1 和 2 的区别是,调用方在得到返回之前所做的事情不一样。
1 和 3 的区别是,被调用方对与烧水的处理方式不一样。

总结

阻塞,非阻塞是从调用者角度来讲的,调用后是否可以去干其他工作。同步,异步是从被调用者来讲,调用结束后是否立即主动返回结果。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...