完全理解同步/异步与阻塞/非阻塞
随便翻开一本 Node.js 入门书籍的绪论部分,一般都可以看到「异步」、「单线程」、「非阻塞」这样的字眼。因其采用异步非阻塞的模型而构建,Node.js 得以能充分利用 CPU 资源,具有极强的处理高并发请求的能力。
可是到底什么是同步和异步?什么是阻塞和非阻塞?同步就意味着阻塞吗?异步就一定是非阻塞吗?即便是业务经验十分丰富的 Node.js 程序员,都不一定对这些概念辨别得十分明晰。
本文力求以简明的语言来解释清楚这几个概念并加以区分,但不涉及到 Node.js 底层的具体实现。