Проверяет понимание модели исполнения Node.js и того, как в нём реализована параллельная обработка задач без классической многопоточности.
Node.js часто называют однопоточным, и это верно только для выполнения JavaScript-кода. Основной поток обрабатывает события через event loop, а все асинхронные операции делегируются системе или пулу потоков библиотеки libuv.
const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', (msg) => console.log('Результат:', msg));
} else {
let sum = 0;
for (let i = 0; i < 1e9; i++) sum += i;
parentPort.postMessage(sum);
}
Здесь тяжёлое вычисление выполняется в отдельном потоке, не блокируя event loop основного процесса.
Итог: Node.js не даёт классической многопоточности в JS, но предоставляет инструменты для параллельной работы — worker_threads, cluster и child_process, а также внутренний пул потоков libuv. Применять их стоит, когда однопоточная модель перестаёт справляться с нагрузкой.