Comment Node.js gère l'asynchrone en single-thread grâce à l'event loop et l'OS
Comment Node.js gère l'asynchrone en single-thread grâce à l'event loop et l'OS
Cette vidéo explique le fonctionnement asynchrone de Node.js, souvent mal compris par les débutants. Contrairement à une exécution bloquante classique, Node.js ne fige pas le processus lors d'une opération lente comme une requête réseau. Il délègue cette tâche au système d'exploitation (OS), qui gère les entrées/sorties via ses propres threads. Pendant ce temps, le code JavaScript continue de s'exécuter. Une fois l'opération terminée, l'OS notifie Node.js, et la réponse est placée dans une file d'attente. C'est l'event loop qui récupère alors cette réponse pour exécuter la suite du code. Ce mécanisme permet à Node.js, bien qu'il soit single-threaded (un seul thread d'exécution JS), de traiter un grand nombre de requêtes simultanément sans bloquer le serveur.
Exemple : Imagine un serveur qui doit récupérer un utilisateur et une ressource. Au lieu d'attendre la réponse de l'utilisateur avant de lancer la requête ressource, Node.js envoie les deux demandes à l'OS. Le code continue immédiatement. Quand les réponses arrivent, elles sont traitées par l'event loop. Cela évite d'occuper inutilement le thread principal.
flowchart LR
A["Code JS"] -->|"Requête HTTP"| B["Système d'exploitation"]
B -->|"Réponse"| C["File d'attente"]
C -->|"Traitement"| D["Event Loop"]
D -->|"Exécution"| A