Thread-Pool wie wann und wer verwendet:
Wenn wir Node auf einem Computer verwenden / installieren, wird zunächst ein Prozess gestartet, der als Knotenprozess auf dem Computer bezeichnet wird, und er wird so lange ausgeführt, bis Sie ihn beenden. Und dieser laufende Prozess ist unser sogenannter Single Thread.
Der Mechanismus eines einzelnen Threads erleichtert das Blockieren einer Knotenanwendung. Dies ist jedoch eine der einzigartigen Funktionen, die Node.js in die Tabelle einbringt. Wenn Sie also Ihre Knotenanwendung erneut ausführen, wird sie nur in einem einzigen Thread ausgeführt. Egal, ob 1 oder 1 Million Benutzer gleichzeitig auf Ihre Anwendung zugreifen.
Lassen Sie uns also genau verstehen, was im einzelnen Thread von nodejs passiert, wenn Sie Ihre Knotenanwendung starten. Zuerst wird das Programm initialisiert, dann wird der gesamte Code der obersten Ebene ausgeführt, dh alle Codes, die sich nicht in einer Rückruffunktion befinden ( denken Sie daran, dass alle Codes in allen Rückruffunktionen in der Ereignisschleife ausgeführt werden ).
Danach wird der gesamte Modulcode ausgeführt und der gesamte Rückruf registriert. Schließlich wurde die Ereignisschleife für Ihre Anwendung gestartet.
Wie bereits erwähnt, werden alle Rückruffunktionen und Codes in diesen Funktionen in der Ereignisschleife ausgeführt. In der Ereignisschleife werden die Lasten in verschiedenen Phasen verteilt. Wie auch immer, ich werde hier nicht über die Ereignisschleife diskutieren.
Zum besseren Verständnis des Thread-Pools bitte ich Sie, sich vorzustellen, dass in der Ereignisschleife Codes innerhalb einer Rückruffunktion ausgeführt werden, nachdem die Ausführung von Codes innerhalb einer anderen Rückruffunktion abgeschlossen wurde. Wenn nun einige Aufgaben tatsächlich zu schwer sind. Sie würden dann den einzelnen Thread unseres Knotens blockieren. Und hier kommt der Thread-Pool ins Spiel, der genau wie die Ereignisschleife von der libuv-Bibliothek für Node.js bereitgestellt wird.
Der Thread-Pool ist also kein Teil von nodejs selbst. Er wird von libuv bereitgestellt, um schwere Aufgaben an libuv zu verlagern. Libuv führt diese Codes in seinen eigenen Threads aus und nach der Ausführung gibt libuv die Ergebnisse an das Ereignis in der Ereignisschleife zurück.
Der Thread-Pool gibt uns vier zusätzliche Threads, die vollständig vom einzelnen Haupt-Thread getrennt sind. Und wir können es tatsächlich bis zu 128 Threads konfigurieren.
Alle diese Threads bildeten zusammen einen Threadpool. Die Ereignisschleife kann dann schwere Aufgaben automatisch in den Thread-Pool verlagern.
Der lustige Teil ist, dass dies alles automatisch hinter den Kulissen geschieht. Es sind nicht wir Entwickler, die entscheiden, was in den Thread-Pool geht und was nicht.
Es gibt viele Aufgaben, die an den Thread-Pool gehen, wie z
-> All operations dealing with files
->Everyting is related to cryptography, like caching passwords.
->All compression stuff
->DNS lookups