Sobes.tech
Back to questions
Junior — Middle
108

Использовал ли ты многопоточность или параллельные возможности в Node.js для повышения производительности?

Answer from AI

sobes.tech AI

В Node.js многопоточность реализуется через модуль worker_threads, который позволяет запускать JavaScript-код в отдельных потоках, что полезно для CPU-интенсивных задач. Также можно использовать кластеры (cluster), чтобы запускать несколько процессов Node.js, эффективно используя многоядерные процессоры.

Пример использования worker_threads:

const { Worker } = require('worker_threads');

function runService(workerData) {
  return new Promise((resolve, reject) => {
    const worker = new Worker('./worker.js', { 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}`));
    });
  });
}

runService({ some: 'data' }).then(result => {
  console.log('Result from worker:', result);
}).catch(err => {
  console.error(err);
});

Таким образом, для повышения производительности в задачах, требующих параллельных вычислений, можно использовать worker_threads или cluster. Для I/O задач обычно хватает асинхронности, встроенной в Node.js.