Sobes.tech
Middle — Middle+

Kako optimizovati izvršavanje zahtevne matematičke operacije u asinhronom okruženju sa jednim threadom tako da ne blokira glavni ciklus događaja?

sobes.tech АИ

Одговор од АИ

U jednostranom asinhronom okruženju, kao što je Node.js, računanja koja zahtevaju mnogo resursa blokiraju glavni događajni petlju, što dovodi do kašnjenja u obradi drugih zahteva. Da biste to izbegli:

  • Premestite računanja u poseban thread ili proces koristeći Worker Threads ili child_process.
  • Koristite asinkrone redove zadataka koji raspoređuju opterećenje.

Primer sa Worker Threads:

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

function runHeavyComputation(data) {
  return new Promise((resolve, reject) => {
    const worker = new Worker('./heavyComputation.js', { workerData: data });
    worker.on('message', resolve);
    worker.on('error', reject);
    worker.on('exit', (code) => {
      if (code !== 0) reject(new Error(`Radnik zaustavljen sa izlaznim kodom ${code}`));
    });
  });
}

// U glavnom fajlu
runHeavyComputation(inputData).then(result => {
  console.log('Rezultat:', result);
});

Na ovaj način, glavni događajni petlja ostaje slobodna za obradu drugih zadataka.