全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 8 分钟 ✍️ juanwangdev

Node.js 进程与线程概念

理解进程与线程是 Node.js 并发编程的基础。

进程

定义

进程是操作系统分配资源的基本单位,拥有独立的内存空间。

特性

特性说明
内存空间独立,互不干扰
资源分配文件描述符、端口等
创建开销较大
通信方式IPC(进程间通信)

Node.js 进程

JavaScript
// 获取进程信息
console.log('进程ID:', process.pid);
console.log('进程标题:', process.title);
console.log('平台:', process.platform);
console.log('架构:', process.arch);
console.log('Node版本:', process.version);
console.log('内存使用:', process.memoryUsage());
console.log('CPU使用:', process.cpuUsage());

线程

定义

线程是 CPU 调度的基本单位,同一进程内的线程共享内存空间。

特性

特性说明
内存空间共享进程内存
创建开销较小
通信方式共享内存
调度操作系统调度

Node.js 线程模型

JavaScript
// Node.js 主线程是单线程
// 但内部有线程池处理某些操作

// libuv 线程池默认 4 个线程
// 可通过 UV_THREADPOOL_SIZE 调整
process.env.UV_THREADPOOL_SIZE = 8;

进程与线程对比

对比项进程线程
资源独立内存共享内存
开销创建成本高创建成本低
安全性进程隔离,安全共享内存需同步
通信IPC 机制复杂共享内存简单
崩溃影响不影响其他进程可能导致进程崩溃

Node.js 单线程特点

单线程优势

JavaScript
// 无锁竞争
// 无死锁风险
// 无线程切换开销

// 适合 I/O 密集型
const fs = require('fs');
fs.readFile('file.txt', (err, data) => {
  // 异步回调,不阻塞
});

单线程劣势

JavaScript
// CPU 密集型会阻塞
function heavyCompute() {
  let sum = 0;
  for (let i = 0; i < 1e9; i++) {
    sum += i;  // 阻塞事件循环
  }
  return sum;
}

解决方案

多进程

JavaScript
// 使用 child_process 或 cluster
const { fork } = require('child_process');
const worker = fork('./worker.js');

多线程

JavaScript
// 使用 worker_threads
const { Worker } = require('worker_threads');
const worker = new Worker('./worker.js');

进程状态

JavaScript
// 进程生命周期
// 创建 → 运行 → 等待 → 终止

// 监听进程事件
process.on('exit', (code) => {
  console.log('进程退出,代码:', code);
});

process.on('beforeExit', (code) => {
  console.log('即将退出');
});

process.on('uncaughtException', (err) => {
  console.error('未捕获异常:', err);
});

注意事项

  • Node.js 主线程单线程,不适合 CPU 密集型
  • I/O 操作由 libuv 线程池处理
  • 多进程适合利用多核 CPU
  • 多线程适合共享内存场景

要点总结

  • 进程拥有独立内存,线程共享内存
  • Node.js 主线程单线程,事件循环驱动
  • CPU 密集型用多进程/多线程解决
  • process 对象提供进程信息和控制
  • libuv 线程池处理异步 I/O

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js 事件循环与线程池
下一篇 → Node.js 进程管理与监控
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库