本文在理论上存在重大错误,个人对所有受到此文误导的朋友表示道歉。新做一篇“IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇) ”,希望能够得到谅解。
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO , 我相信这几个词困扰过很多人,更痛苦的是,如果你查阅过文献资料,你会发现不同的资料中的解释是不一样的,例如在wiki中,异步和非阻塞被当成了一个概念 。
出 现这种情况的原因,我认为很大程度上是因为IO这个概念本身就很宽泛,它其实包含了好几个层面。比如说,你可以把它看做是一个物理上的设备,也可以看做是 OS抽象出来的一个软件,还可以看做是平时写程序用的read(),write()函数,不同的层面对于这几个词的理解也是不一样的。
先看一个较低的层次。如果从CPU的角度看,其实大