#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
5 min read
Question 49 of 62hard

What are Worker Threads in Node.js?

Understanding worker threads for CPU-intensive tasks.

What You'll Learn

  • What worker threads are
  • When to use them
  • How to implement

What are Worker Threads?

Worker Threads allow running JavaScript in parallel threads, useful for CPU-intensive tasks without blocking the main thread.

Worker Threads vs Cluster

FeatureWorker ThreadsCluster
MemoryShared (SharedArrayBuffer)Separate
Use caseCPU-intensive tasksScaling HTTP servers
CommunicationpostMessage, shared memoryIPC

Basic Example

code.jsJavaScript
// main.js
const { Worker } = require('worker_threads');

const worker = new Worker('./worker.js', {
  workerData: { num: 42 }
});

worker.on('message', (result) => {
  console.log('Result:', result);
});

worker.on('error', (err) => {
  console.error('Worker error:', err);
});

worker.on('exit', (code) => {
  console.log('Worker exited with code:', code);
});
code.jsJavaScript
// worker.js
const { parentPort, workerData } = require('worker_threads');

// CPU-intensive calculation
function fibonacci(n) {
  if (n <= 1) return n;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

const result = fibonacci(workerData.num);
parentPort.postMessage(result);

Shared Memory

code.jsJavaScript
// main.js
const { Worker } = require('worker_threads');

const sharedBuffer = new SharedArrayBuffer(4);
const sharedArray = new Int32Array(sharedBuffer);

const worker = new Worker('./worker.js', {
  workerData: { sharedBuffer }
});

// worker.js
const { workerData } = require('worker_threads');
const sharedArray = new Int32Array(workerData.sharedBuffer);
Atomics.add(sharedArray, 0, 1);