关于同步、异步,阻塞、非阻塞
这其实是两组概念【同步,异步】和【阻塞,非阻塞】,不能认为他是IO或者线程模型里面的四个模式,更不能简单的认为同步就是阻塞,异步就是非阻塞。实际上,这应该是一个2*2矩阵。
关于这两组概念,随便搜一搜都能找到很多科普文。不过我最近看到一个比较有意思的例子,用来解释这个再适合不过了。
1.【同步,异步】
1.1 同步
我烧水,把水壶放在普通
热水器上,等着水开,我什么都不干,就等着水开
然后去倒水。
1.2 异步
我烧水,把水壶放在自带沸腾报警
的热水器上,马上回头,去看书。热水器在烧水,我在看书。水开了,我听到了水壶报警
,去倒水。
2.【阻塞,非阻塞】
2.1 阻塞
我烧水,把水壶放在普通热水器上,等着水开,我什么都不干
,就等着水开然后去倒水。
2.2 非阻塞
我烧水,把水壶放在自带沸腾报警的热水器上,马上回头
,去看书。热水器在烧水,我在看书
。水开了,我听到了水壶报警,去倒水。
看到了上面的两组完全相同的例子,但是在不同的地方做了标注,可以做出如下总结
所谓同步异步,只是对于水壶而言。
所谓阻塞非阻塞,仅仅对于我而言。