-
Tout d'abord,
libuva supprimé lelibeioà partir de cela. Mais il effectue des E/S de fichiers asynchrones avec un pool de threads commelibeiocomme vous l'avez mentionné. -
libuvsupprime égalementlibev. Il effectue les E/S réseau asynchrones en fonction des interfaces d'E/S asynchrones dans différentes plates-formes, telles queepoll,kqueueetIOCP, sans pool de threads. Il y a une boucle d'événement qui s'exécute sur le thread principal deuvqui interroge les événements d'E/S et les traite. -
Le pool de threads à l'intérieur de
libuvest un pool de threads de taille fixe (4 dans un système de type uinx). Il joue un rôle de file d'attente de tâches et évite l'épuisement des ressources système en générant indéfiniment des threads lorsque les requêtes augmentent.
Jusqu'à la version 0.6, le nœud utilisait libev pour exécuter la boucle d'événement et libeio pour les E/S asynchrones (le backend Unix repose fortement sur ces deux bibliothèques). Mais libuv a commencé à remplacer libev et libeio dans la version 0.8. Il exécute, maintient et gère tous les io et les événements du pool d'événements. libuv est le choix dans les bibliothèques d'E/S asynchrones multiplateformes.
- Oui, jusqu'au nœud 0.6, obsolète dans la version 0.8 et utilise le pool de threads
-
Oui, mais
libevn'utilise pas de pool de threads. Voir iciClarification :D'après le lien dans la question que j'ai posté,
libeioprend en charge toutes les fonctions POSIX traitant des E/S (ce qui inclut socket). Mais l'auteur du nœud a décidé de l'utiliser uniquement pour les E/S de fichiers asynchrones et utiliselibevpour les E/S réseau. Je ne sais pas d'où vous l'avez entendu, mais vous pouvez utiliser epoll sur des fichiers normaux. -
libevutilise une boucle d'événements donc pas de problèmes ici. - Oui, IOCP gère les E/S asynchrones dans Windows, le noyau utilise des pools de threads.
- Le nouveau noyau Linux a epoll, kqueue dans le nouveau noyau BSD.
libevetlibeioétaient pour l'environnement Linux et fournissent une boucle d'événement/E/S asynchrones pour tous les noyaux (prend en charge select, poll, epoll, kqueue).
Mettre à jour les questions :
- je ne sais pas grand-chose sur
libuv - peut-être assez (je ne sais pas)
-
Voici mes découvertes sur Windows 8, vérifiées via Process Explorer. A montré 4 fils, 1 DLL, 1 fichier et 1 section (7 entrées au total) pour un processus d'application de nœud.
-
ps -eLfaffiche tous les threads et processus, peut-être que vous le filtrez trop, recherchez simplement le pid de processus de nœud commeps -eLf | grep xoù x est le pid du processus de nœud.