snippetjavascriptnodejsModeratepending
Node.js worker_threads for CPU-intensive tasks
Viewed 0 times
worker_threadsCPUparalleloffloadevent-loop
Problem
CPU-intensive operations block the Node.js event loop, making the server unresponsive.
Solution
Use worker_threads to offload CPU work:
// main.js
const { Worker } = require('worker_threads');
function runWorker(data) {
return new Promise((resolve, reject) => {
const worker = new Worker('./worker.js', { workerData: data });
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', code => {
if (code !== 0) reject(new Error(
});
});
}
// worker.js
const { parentPort, workerData } = require('worker_threads');
const result = heavyComputation(workerData);
parentPort.postMessage(result);
// main.js
const { Worker } = require('worker_threads');
function runWorker(data) {
return new Promise((resolve, reject) => {
const worker = new Worker('./worker.js', { workerData: data });
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', code => {
if (code !== 0) reject(new Error(
Worker exited with code ${code}));});
});
}
// worker.js
const { parentPort, workerData } = require('worker_threads');
const result = heavyComputation(workerData);
parentPort.postMessage(result);
Why
Worker threads run in separate V8 isolates with their own event loops, preventing CPU work from blocking the main thread.
Revisions (0)
No revisions yet.