Introduction
Workers and clusters help Node.js run multiple tasks at the same time to make programs faster and more efficient.
Jump into concepts and practice - no test required
const { Worker } = require('worker_threads');
const worker = new Worker('./worker.js');
worker.on('message', (msg) => {
console.log('Message from worker:', msg);
});
worker.postMessage('start');const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isPrimary) { for (let i = 0; i < numCPUs; i++) { cluster.fork(); } } else { http.createServer((req, res) => { res.writeHead(200); res.end('Hello from worker ' + process.pid); }).listen(8000); }
const { Worker } = require('worker_threads');
const worker = new Worker(`
const { parentPort } = require('worker_threads');
parentPort.on('message', (msg) => {
parentPort.postMessage(msg + ' processed');
});
`, { eval: true });
worker.on('message', (msg) => console.log(msg));
worker.postMessage('data');const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isPrimary) { console.log(`Primary ${process.pid} is running`); for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`Worker ${worker.process.pid} died`); }); } else { http.createServer((req, res) => { res.writeHead(200); res.end(`Hello from worker ${process.pid}`); }).listen(8000); console.log(`Worker ${process.pid} started`); }
worker_threads in Node.js instead of cluster?const cluster = require('cluster');
if (cluster.isPrimary) {
cluster.fork();
cluster.fork();
} else {
console.log('Worker process started');
}
What will be the output when you run this code?const { Worker } = require('worker_threads');
const worker = new Worker('./worker.js');
worker.on('message', (msg) => console.log(msg));
worker.postMessage('start');
What is the likely problem here?