Sobes.tech
Middle — Middle+

Hogyan lehet optimalizálni egy erőforrás-igényes matematikai művelet végrehajtását egy egyszálas aszinkron környezetben, hogy az ne blokkolja a fő eseményciklust?

sobes.tech MI

Válasz az MI-től

Egyetlen szálú aszinkron környezetben, például Node.js-ben, az erőforrás-igényes számítások blokkolják a fő eseménysorozatot, ami késedelmet okoz más kérések feldolgozásában. Ennek elkerülése érdekében:

  • Mozgasd a számításokat külön szálra vagy folyamatba, a Worker Threads vagy child_process használatával.
  • Használj aszinkron feladatkérő sorokat, amelyek elosztják a terhelést.

Példa Worker Threads használatával:

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(`Worker leállt kilépési kóddal ${code}`));
    });
  });
}

// Fő fájlban
runHeavyComputation(inputData).then(result => {
  console.log('Eredmény:', result);
});

Így a fő eseménysorozat szabadon marad más feladatok feldolgozására.