Worker Threads chạy JS trong separate threads trong cùng process — chia sẻ memory qua SharedArrayBuffer, dùng Atomics để synchronize.
- Cluster tạo separate OS processes — không share memory, overhead IPC cao hơn.
- Worker Threads API:
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads'). - Main thread:
new Worker('./worker.js', { workerData: { input } }), lắng ngheworker.on('message', result => ...). - Worker thread:
parentPort.postMessage(result). - Message passing qua
postMessage()— data được structured clone (deep copy) trừ khi transfer ownership với Transferable (ArrayBuffer). - SharedArrayBuffer + Atomics: chia sẻ raw memory không cần copy — dùng cho real-time collaboration, game state.
- Use cases thực tế: image resizing (sharp library), PDF generation, crypto operations, ML inference, large JSON parsing.
Pitfall: Worker Threads không tăng tốc I/O-bound tasks — Node.js event loop đã xử lý I/O async; chỉ dùng cho CPU-bound tasks chiếm event loop > 10ms.