Lab 02: Worker Threads
Overview
Step 1: Basic Worker Thread
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');
if (isMainThread) {
// Main thread — spawn worker
const worker = new Worker(__filename, {
workerData: { numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] }
});
worker.on('message', result => {
console.log('Sum from worker:', result); // 55
});
worker.on('error', err => console.error('Worker error:', err));
worker.on('exit', code => {
if (code !== 0) console.error('Worker stopped with code:', code);
});
} else {
// Worker thread
const { numbers } = workerData;
const sum = numbers.reduce((a, b) => a + b, 0);
parentPort.postMessage(sum);
}Step 2: Worker from String (eval mode)
Step 3: SharedArrayBuffer & Atomics
Step 4: MessageChannel
Step 5: Transferable Objects
Step 6: Worker Pool Pattern
Step 7: CPU-Bound Task Offloading
Step 8: Capstone — Worker fib(35)
Summary
Concept
API
Use Case
Last updated
