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.