Node.js résout le "problème d'un thread par connexion" en plaçant le modèle événementiel à son cœur, en utilisant une boucle d'événements au lieu de threads. Toutes les opérations d'E/S coûteuses sont toujours exécutées de manière asynchrone avec un callback qui est exécuté lorsque l'opération initiée est terminée.
L'observation SI une opération se produit est gérée par des mécanismes de multiplexage tels que epoll()
.
Ma question est maintenant :
-
Pourquoi NodeJS ne bloque-t-il pas lors de l'utilisation des Systemcalls bloquants select/epoll/kqueue ?
-
Ou bien NodeJS n'est pas du tout monofilaire, de sorte qu'un deuxième fil est
nécessaire d'observer toutes les opérations d'E/S avec select/epoll/kqueue ?
6 votes
Je vous suggère de lire cet excellent article intitulé "Node is Not Single Threaded" : rickgaribay.net/archive/2012/01/28/
0 votes
Vous ne pouvez pas faire des tâches/traitements parallèles dans NodeJS.
0 votes
Vous exécutez rarement une seule instance de Node dans votre déploiement, vous aurez donc plusieurs threads. Si vous utilisez quelque chose comme Sails.js (framework MVC pour Node), vous devez vous assurer que les actions de votre contrôleur sont atomiques, sinon les opérations seront mélangées et le résultat sera inattendu.