Node.js中如何实现高效的多线程操作以应对长尾并发请求?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2171个文字,预计阅读时间需要9分钟。
Node.js 是单线程的,但允许多线程操作。下面本篇章从 Node+ 线程说起,谈谈 Node.js 中的多线程操作,介绍 worker_threads 模板。
文本测试环境:系统:macOS Mojave
虽说nodejs是单线程的,但是它还是容许多线程操作,下面本篇文章给大家从 Node 线程说起,谈谈Nodejs中的多线程操作,介绍一下worker_threads模板。本文测试使用环境:
系统:macOS Mojave 10.14.2
CPU:4 核 2.3 GHz
Node: 10.15.1
从 Node 线程说起
一般人理解 Node 是单线程的,所以 Node 启动后线程数应该为 1,我们做实验看一下。
setInterval(() => { console.log(new Date().getTime()) }, 3000)
可以看到 Node 进程占用了 7 个线程。为什么会有 7 个线程呢?
我们都知道,Node 中最核心的是 v8 引擎,在 Node 启动后,会创建 v8 的实例,这个实例是多线程的。
- 主线程:编译、执行代码。
- 编译/优化线程:在主线程执行的时候,可以优化代码。
- 分析器线程:记录分析代码运行时间,为 Crankshaft 优化代码执行提供依据。
- 垃圾回收的几个线程。
本文共计2171个文字,预计阅读时间需要9分钟。
Node.js 是单线程的,但允许多线程操作。下面本篇章从 Node+ 线程说起,谈谈 Node.js 中的多线程操作,介绍 worker_threads 模板。
文本测试环境:系统:macOS Mojave
虽说nodejs是单线程的,但是它还是容许多线程操作,下面本篇文章给大家从 Node 线程说起,谈谈Nodejs中的多线程操作,介绍一下worker_threads模板。本文测试使用环境:
系统:macOS Mojave 10.14.2
CPU:4 核 2.3 GHz
Node: 10.15.1
从 Node 线程说起
一般人理解 Node 是单线程的,所以 Node 启动后线程数应该为 1,我们做实验看一下。
setInterval(() => { console.log(new Date().getTime()) }, 3000)
可以看到 Node 进程占用了 7 个线程。为什么会有 7 个线程呢?
我们都知道,Node 中最核心的是 v8 引擎,在 Node 启动后,会创建 v8 的实例,这个实例是多线程的。
- 主线程:编译、执行代码。
- 编译/优化线程:在主线程执行的时候,可以优化代码。
- 分析器线程:记录分析代码运行时间,为 Crankshaft 优化代码执行提供依据。
- 垃圾回收的几个线程。

