Sobes.tech
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);
  }
})();

Такой подход позволяет эффективно распределять нагрузку и не блокировать основной поток.