-
Zunächst einmal
libuvhat dielibeioentfernt davon. Aber es führt asynchrone Datei-E/A mit einem Thread-Pool wielibeiodurch wie du schon erwähnt hast. -
libuventfernt auchlibev. Es führt die asynchrone Netzwerk-E/A basierend auf den asynchronen E/A-Schnittstellen in verschiedenen Plattformen aus, z. B.epoll,kqueueundIOCP, ohne Thread-Pool. Es gibt eine Ereignisschleife, die im Hauptthread vonuvausgeführt wird der die I/O-Ereignisse abfragt und verarbeitet. -
Der Thread-Pool in
libuvist 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
libevverwendet keinen Thread-Pool. Siehe hierKlarstellung:Gemäß dem Link in der Frage, die ich gepostet habe,
libeiounterstü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 verwendetlibevfür Netzwerk-E/A. Ich weiß nicht, woher Sie es gehört haben, aber Sie können epoll für normale Dateien verwenden. -
libevverwendet 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.
libevundlibeiowaren 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 -eLfzeigt alle Threads und Prozesse an, vielleicht überfiltern Sie es, suchen Sie einfach nach der Knotenprozess-PID wieps -eLf | grep xwobei x die PID für den Knotenprozess ist.