关于同步、异步,阻塞、非阻塞

这其实是两组概念【同步,异步】和【阻塞,非阻塞】,不能认为他是IO或者线程模型里面的四个模式,更不能简单的认为同步就是阻塞,异步就是非阻塞。实际上,这应该是一个2*2矩阵。

关于这两组概念,随便搜一搜都能找到很多科普文。不过我最近看到一个比较有意思的例子,用来解释这个再适合不过了。


1.【同步,异步】

1.1 同步

我烧水,把水壶放在普通热水器上,等着水开,我什么都不干,就等着水开然后去倒水。

1.2 异步

我烧水,把水壶放在自带沸腾报警的热水器上,马上回头,去看书。热水器在烧水,我在看书。水开了,我听到了水壶报警,去倒水。

2.【阻塞,非阻塞】

2.1 阻塞

我烧水,把水壶放在普通热水器上,等着水开,我什么都不干,就等着水开然后去倒水。

2.2 非阻塞

我烧水,把水壶放在自带沸腾报警的热水器上,马上回头,去看书。热水器在烧水,我在看书。水开了,我听到了水壶报警,去倒水。

看到了上面的两组完全相同的例子,但是在不同的地方做了标注,可以做出如下总结

所谓同步异步,只是对于水壶而言。
所谓阻塞非阻塞,仅仅对于我而言。

刘摸鱼

退堂鼓表演艺术家

杭州