Node.js 词条目录
前端Wiki/词条/worker_threads 线程

worker_threads 线程

定义在独立线程内运行 JS 的内置模块,跑 CPU 密集任务而不阻塞事件循环

虽然 Node 主线程是单线程,但 worker_threads 可以在独立线程里运行另一段 JS。每个 Worker 拥有自己的 V8 实例与事件循环,主从线程之间通过 postMessage 双向收发消息。它解决的是 CPU 密集型计算阻塞主事件循环的问题——图片处理、压缩、加密这类任务丢进线程池后,主接口依然丝滑。

使用方式:主线程用 new Worker(文件路径) 起一个工作线程,通过 on 监听结果;工作线程内部用 parentPort 往外发消息。数据传递默认会被序列化,大块二进制数据可用 transferList 转移所有权避免拷贝。注意线程本身有不小的开销,不适合把任务拆成过多小线程。

JavaScript
const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) {
  // 主线程:把耗时计算丢给工作线程
  const worker = new Worker(__filename);
  worker.on('message', (sum) => {
    console.log('计算结果: ' + sum);
  });
} else {
  // 工作线程:纯 CPU 计算,不阻塞主线程
  let sum = 0;
  for (let i = 0; i < 1e9; i++) sum += i;
  parentPort.postMessage(sum);
}
⚠ 常见误区
🔗 相关词条事件驱动与非阻塞 I/O调试与性能技巧
← 返回来源章节调试与性能技巧