《深入浅出 Node.js》阅读随笔
众所周知,Node.js 虽然也有部分同步编程的方式,但主要还是以后异步编程为主。这在给它提供性能优势的同时,也带来了不少困惑。毕竟主流的编程模式一直都是同步编程。
-
聊聊同步编程
同步编程更符合人类线性思维的方式,代码一行一行执行,如果想有效利用计算机资源,需要建立多个线程,涉及到同步、锁等概念,但是线程之间切换存在一定的开销。例如访问两个同步接口 A 和 B ,那么消耗的总时间是 A+B 的时间。 -
聊聊异步编程
异步编程会有更好的 I/O 性能优势,就拿上面同步的例子来说,在异步情况下,消耗的总时间取决于 A 和 B 当中的较大者。但在编码的过程中,并不符合人类的常规思维,第一行写的代码,可能会在第二行完成以后,才执行完毕。
- 何以解惑
事实上,Node.js 之所以可以流行起来,是在因为异步编程中存在的问题,得到了一定程度的解决。比如通过事件的发布/订阅模式、promise/async/await 以及优秀的同步包等。
网友评论