Node.js Worker Threads — Parallel Processing

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro