Worker Threads chạy JavaScript trong nhiều thread của cùng một process — chia sẻ bộ nhớ được qua SharedArrayBuffer và đồng bộ bằng Atomics.
Cluster thì tạo hẳn process riêng: không chia sẻ bộ nhớ và overhead IPC cao hơn.
js
// main thread
const { Worker } = require('worker_threads')
const worker = new Worker('./worker.js', { workerData: { input } })
worker.on('message', (result) => { /* ... */ })
// worker.js
const { parentPort, workerData } = require('worker_threads')
parentPort.postMessage(compute(workerData.input))- Truyền dữ liệu:
postMessage()structured clone (deep copy) trừ khi bạn chuyển quyền sở hữu bằng Transferable (ArrayBuffer). - SharedArrayBuffer + Atomics: chia sẻ vùng nhớ thô không cần copy — hợp cho real-time collaboration hay game state.
- Dùng thật ở đâu: resize ảnh (thư viện sharp), sinh PDF, thao tác crypto, ML inference, parse JSON cực lớn.
Lưu ý: Worker Threads không làm tác vụ I/O nhanh hơn — event loop của Node.js vốn đã xử lý I/O bất đồng bộ. Chỉ dùng cho tác vụ CPU-bound chiếm event loop quá ~10ms.