本文测试使用环境:
系统:macOS Mojave 10.14.2
CPU:4 核 2.3 GHz
Node: 10.15.1
从 Node 线程说起
一般人理解 Node 是单线程的,所以 Node 启动后线程数应该为 1,我们做实验看一下。
1 | setInterval(() => { |
可以看到 Node 进程占用了 7 个线程。为什么会有 7 个线程呢?
我们都知道,Node 中最核心的是 v8 引擎,在 Node 启动后,会创建 v8 的实例,这个实例是多线程的。
- 主线程:编译、执行代码。
- 编译/优化线程:在主线程执行的时候,可以优化代码。
- 分析器线程:记录分析代码运行时间,为 Crankshaft 优化代码执行提供依据。
- 垃圾回收的几个线程。
的工作模式,主要是把项目的代码结构给几位同事讲一下,还有一些比较容易让人困惑的点,才发现我对项目是如此熟悉,大部分代码如数家珍。