Back to questions
Junior — Middle
80
Каким образом вы организовывали работу с потоками worker в своих проектах?
Answer from AI
sobes.tech AI
В проектах на Node.js для организации работы с потоками worker обычно использую модуль worker_threads или сторонние библиотеки, например, bull для очередей задач.
Основные подходы:
- Создаю пул воркеров, чтобы ограничить количество одновременно работающих потоков.
- Передаю задачи в воркеры через сообщения (message passing).
- Обрабатываю результаты и ошибки асинхронно.
Пример с использованием worker_threads:
const { Worker } = require('worker_threads');
function runWorker(path, workerData) {
return new Promise((resolve, reject) => {
const worker = new Worker(path, { workerData });
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', code => {
if (code !== 0) reject(new Error(`Worker stopped with exit code ${code}`));
});
});
}
(async () => {
try {
const result = await runWorker('./worker.js', { some: 'data' });
console.log('Result from worker:', result);
} catch (err) {
console.error(err);
}
})();
Такой подход позволяет эффективно распределять нагрузку и не блокировать основной поток.