Middle — Middle+
Kā optimizēt resursu intensīvas matemātiskas operācijas izpildi vienas pavediena asinhronā vidē, lai tā neapturētu galveno notikumu ciklu?
sobes.tech AI
Atbilde no AI
Vienkāršā asinhronā vidē, piemēram, Node.js, resursu intensīvi aprēķini bloķē galveno notikumu ciklu, kas noved pie kavēšanās citām pieprasījumu apstrādei. Lai to novērstu:
- Pārvietojiet aprēķinus uz atsevišķu pavedienu vai procesu, izmantojot Worker Threads vai child_process.
- Izmantojiet asinhronas uzdevumu rindas, kas sadala slodzi.
Piemērs ar 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(`Darbinieks apstājās ar izejas kodu ${code}`));
});
});
}
// Galvenajā failā
runHeavyComputation(inputData).then(result => {
console.log('Rezultāts:', result);
});
Tādējādi galvenais notikumu cikls paliek brīvs citu uzdevumu apstrādei.