Node.js Worker Threads — Parallel Processing
Advertisement
Worker threads enable true parallelism in Node.js. Perfect for CPU-bound workloads.
Basic Example
import { Worker } from "worker_threads";
import path from "path";
// Spawn worker
const worker = new Worker(path.join(__dirname, "worker.ts"));
worker.on("message", (msg) => {
console.log("Result:", msg);
});
worker.on("error", (err) => {
console.error("Worker error:", err);
});
worker.on("exit", (code) => {
console.log("Worker exited with code", code);
});
// Send data to worker
worker.postMessage({ data: [1, 2, 3, 4, 5] });
// worker.ts
import { parentPort } from "worker_threads";
parentPort?.on("message", (msg) => {
const result = expensiveCalculation(msg.data);
parentPort?.postMessage(result);
});
Worker Pool
import piscina from "piscina";
const pool = new piscina({
filename: path.join(__dirname, "worker.ts"),
});
// Distribute work
const results = await Promise.all([
pool.run({ data: [1, 2, 3] }),
pool.run({ data: [4, 5, 6] }),
pool.run({ data: [7, 8, 9] }),
]);
console.log(results);
FAQ
Q: When to use workers? A: CPU-intensive tasks. Not I/O (database, network).
Worker threads bring true parallelism to Node.js.
Advertisement