Node.js & Libuv•Part 3: Streams, Buffers & Core Modules (21 - 35)
Worker Threads vs Child Processes vs Clustering.
In Simple Words:
- Clustering: Multiple independent OS processes running identical server code; no shared memory.
- Child Processes (
child_process): Spawns external shell commands or programs; heavy OS overhead. - Worker Threads (
worker_threads): Multiple threads within the same OS process, sharing the same memory heap and usingSharedArrayBufferfor zero-copy data transfer.
javascript
const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', (msg) => console.log('From worker:', msg));
worker.postMessage('start');
} else {
parentPort.on('message', () => parentPort.postMessage('Done CPU task'));
}