Skip to content

Worker Threads & Child Processes

Worker Threads & Child Processes

Since Node.js is single-threaded, we use these modules to perform heavy tasks without blocking the main event loop.

1. Child Processes

Used to run shell commands or execute other files as separate processes.

const { exec } = require('child_process');
exec('ls -lh', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
});

2. Worker Threads

Used for CPU-intensive JavaScript tasks (like image processing or data encryption). Unlike child processes, workers share memory.

const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', (msg) => console.log(`Worker said: ${msg}`));
worker.postMessage('Start working!');
} else {
parentPort.on('message', (msg) => {
// Perform heavy task here
parentPort.postMessage('Done!');
});
}

[!NOTE] Use Child Processes for system commands and Worker Threads for heavy JavaScript computation.