Performance: Receiving results from workers
MEDIUM IMPACT
This affects how quickly the main thread can process results from worker threads, impacting interaction responsiveness and overall throughput.
const { Worker } = require('worker_threads');
const results = [];
let completed = 0;
function handleResult(result) {
results.push(result);
completed++;
if (completed === 5) {
console.log('All results:', results);
}
}
for (let i = 0; i < 5; i++) {
const worker = new Worker('./worker.js');
worker.once('message', handleResult);
worker.once('error', (err) => console.error(err));
}const { Worker } = require('worker_threads');
const results = [];
for (let i = 0; i < 5; i++) {
const worker = new Worker('./worker.js');
worker.on('message', (result) => {
results.push(result);
if (results.length === 5) {
console.log('All results:', results);
}
});
worker.on('error', (err) => console.error(err));
}| Pattern | Event Loop Impact | Memory Usage | Main Thread Blocking | Verdict |
|---|---|---|---|---|
| Multiple persistent listeners with frequent messages | High event loop churn | Potential memory spikes | Possible blocking if processing is heavy | [X] Bad |
| Single-use listeners with controlled message handling | Minimal event loop overhead | Stable memory usage | Non-blocking with async processing | [OK] Good |