Middle — Middle+
Comment optimiser l'exécution d'une opération mathématique gourmande en ressources dans un environnement asynchrone mono-thread pour qu'elle ne bloque pas la boucle d'événements principale?
sobes.tech IA
Réponse de l'IA
Dans un environnement asynchrone mono-thread, comme Node.js, les calculs gourmands en ressources bloquent la boucle d'événements principale, ce qui entraîne des retards dans le traitement d'autres requêtes. Pour éviter cela :
- Déplacer les calculs dans un thread ou un processus séparé, en utilisant Worker Threads ou child_process.
- Utiliser des files d'attente de tâches asynchrones qui répartissent la charge.
Exemple avec 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(`Worker arrêté avec le code de sortie ${code}`));
});
});
}
// Dans le fichier principal
runHeavyComputation(inputData).then(result => {
console.log('Résultat :', result);
});
Ainsi, la boucle d'événements principale reste libre pour traiter d'autres tâches.