跳到主要内容

worker-threads

Worker Threads

在同一进程内提供多线程执行环境,适合 CPU 密集型任务与隔离状态管理。

要点

  • 创建与通信:worker_threadsMessageChannel/MessagePort
  • 共享内存:SharedArrayBufferAtomics
  • 资源管理:传输 vs 复制、结构化克隆;
  • 与 Cluster 的区别:线程 vs 进程、内存与崩溃隔离。

示例:基本 Worker

// main.mjs
import { Worker } from 'node:worker_threads';
const worker = new Worker(new URL('./worker.mjs', import.meta.url), { workerData: { n: 42 } });
worker.on('message', (msg) => console.log('result:', msg));
// worker.mjs
import { parentPort, workerData } from 'node:worker_threads';
parentPort.postMessage(workerData.n * 2);

任务池建议:预热固定数量的 Worker,使用队列分发任务,避免频繁创建销毁。

构建注意:打包器需将 Worker 入口标记为独立 bundle;TS 中使用 new URL('./worker.ts', import.meta.url) 配合构建器的 loader。