-
Zunächst einmal
libuv
hat dielibeio
entfernt davon. Aber es führt asynchrone Datei-E/A mit einem Thread-Pool wielibeio
durch wie du schon erwähnt hast. -
libuv
entfernt auchlibev
. Es führt die asynchrone Netzwerk-E/A basierend auf den asynchronen E/A-Schnittstellen in verschiedenen Plattformen aus, z. B.epoll
,kqueue
undIOCP
, ohne Thread-Pool. Es gibt eine Ereignisschleife, die im Hauptthread vonuv
ausgeführt wird der die I/O-Ereignisse abfragt und verarbeitet. -
Der Thread-Pool in
libuv
ist ein Thread-Pool mit fester Größe (4 in uinx-ähnlichen Systemen). Es übernimmt eine Aufgabenwarteschlangenrolle und vermeidet die Erschöpfung der Systemressourcen, indem es Threads auf unbestimmte Zeit generiert, wenn die Anforderungen zunehmen.
Bis Version 0.6 verwendete der Knoten libev
um event-loop und libeio
auszuführen für asynchrone E/A (das Unix-Backend basiert stark auf diesen beiden Bibliotheken). Aber libuv
hat damit begonnen, libev
zu ersetzen und libeio
in Version 0.8. Es führt, pflegt und verwaltet alle io und Events im Event-Pool. libuv
ist die Wahl in plattformübergreifenden asynchronen IO-Bibliotheken.
- Ja, bis Knoten 0.6, veraltet in 0.8 und verwendet Thread-Pool
-
Ja, aber
libev
verwendet keinen Thread-Pool. Siehe hierKlarstellung:Gemäß dem Link in der Frage, die ich gepostet habe,
libeio
unterstützt alle POSIX-Funktionen, die sich mit I/O befassen (einschließlich Socket). Der Autor des Knotens hat sich jedoch entschieden, ihn nur für die asynchrone Datei-E/A zu verwenden, und verwendetlibev
für Netzwerk-E/A. Ich weiß nicht, woher Sie es gehört haben, aber Sie können epoll für normale Dateien verwenden. -
libev
verwendet Ereignisschleife, also hier keine Probleme. - Ja, IOCP verarbeitet asynchrone E/A in Windows, der Kernel verwendet Thread-Pools.
- Der neue Linux-Kernel hat epoll, kqueue im neuen BSD-Kernel.
libev
undlibeio
waren für die Linux-Umgebung und bieten Event Loop/async IO für alle Kernel (unterstützt select, poll, epoll, kqueue).
Fragen aktualisieren:
- weiß nicht viel über
libuv
- vielleicht genug (weiß nicht)
-
Hier sind meine Ergebnisse zu Windows 8, die ich über den Process Explorer überprüft habe. Zeigte 4 Threads, 1 DLL, 1 Datei und 1 Abschnitt (insgesamt 7 Einträge) für einen Knotenanwendungsprozess.
-
ps -eLf
zeigt alle Threads und Prozesse an, vielleicht überfiltern Sie es, suchen Sie einfach nach der Knotenprozess-PID wieps -eLf | grep x
wobei x die PID für den Knotenprozess ist.