第九章 玩转进程
Node 基于 V8 引擎构建,采用单线程模型,所有的 JavaScript 将会运行在单个进程的单个线程上,它带来的好处是:没有多线程中常见的锁以及线程同步的问题,操作系统在调度时也能减少上下文切换,提高 CPU 使用率。但是如今 CPU 基本均是多核的,真正的服务器往往还有多个 CPU,一个 Node 进程只能利用一个核,这带来硬件资源的浪费。另外,Node 运行在单线程之上,一个单线程抛出异常而没有被捕获,将会导致进程的崩溃。
严格来说,Node 并非真正的单线程,Node 自身中还有 I/O 线程存在,这些 I/O 线程由底层 libuv 处理,这部分线程对于 JavaScript 而言是透明的,只有 C++ 扩展时才会关注到,JavaScript 代码运行在 V8 上,是单线程的。
more >>