‫Dozent: Denken Sie daran, dass wir
‫im letzten Vortrag über die Node-Architektur gesprochen
‫haben, bei der
‫zwei grundlegende Teile der Thread-Pool und die Ereignisschleife sind.
‫In diesem Vortrag erfahren Sie
‫alles über Threads und einen Thread-Pool.
‫Und im
‫nächsten tauchen wir dann tief in die Eventschleife ein.
‫Also lasst uns anfangen.
‫Wenn wir Node auf einem Computer verwenden, bedeutet
‫dies zunächst, dass auf diesem Computer
‫ein Node-Prozess ausgeführt wird.
‫Und der Prozess ist nur ein Programm in der Ausführung.
‫Und wir haben bereits gelernt, dass Node. js ist
‫im Grunde ein C++-Programm, das
‫daher einen Prozess startet, wenn es ausgeführt wird.
‫Dies ist wichtig, da wir
‫in Node tatsächlich Zugriff auf eine Prozessvariable haben,
‫die wir später in diesem Kurs verwenden werden.
‫Jetzt in diesem Prozess, Node. js läuft
‫in einem sogenannten Single-Thread.
‫Und ein Thread ist im Grunde nur eine Abfolge von Anweisungen.
‫Es ist jedoch nicht wichtig, genau zu
‫verstehen, was ein Thread oder ein Prozess ist.
‫Das ist eher Informatik.
‫Stellen Sie sich einen Thread als eine
‫Box vor, in der unser Code im Prozessor eines Computers ausgeführt wird.
‫Was hier wichtig zu verstehen
‫ist, ist die Tatsache, dass Node in nur einem Thread
‫ausgeführt wird, was das Blockieren von Node-Anwendungen erleichtert.
‫Und das ist etwas, worüber wir schon früher gesprochen haben.
‫Aber es ist wirklich wichtig, sich daran zu erinnern, denn
‫dies ist eine der einzigartigen
‫Funktionen von Node. js auf den Tisch bringt.
‫Wenn Sie also Ihre Node-Anwendung ausführen, wird sie in
‫nur einem einzigen Thread ausgeführt.
‫Egal, ob Sie 10 Benutzer oder 10
‫Millionen Benutzer haben, die gleichzeitig auf Ihre Anwendung zugreifen.
‫Sie müssen also sehr vorsichtig
‫sein, diesen Thread nicht zu blockieren.
‫Und darum kümmern wir
‫uns in diesem Kurs natürlich während des gesamten Projekts.
‫Lassen Sie uns nun
‫schnell verstehen, was in einem einzelnen Thread
‫passiert, wenn Sie Ihre Node-Anwendung starten.
‫Wenn das Programm initialisiert wird, wird der
‫gesamte Code der obersten Ebene ausgeführt, dh der
‫gesamte Code, der sich
‫nicht in einer Callback-Funktion befindet.
‫Außerdem werden alle Module benötigt, die Ihre App benötigt und alle
‫Callbacks werden registriert, genau wie die,
‫die wir für unseren
‫HTP-Server in der Node Farm App verwendet haben.
‫Erinnere dich daran?
‫Nach all dem beginnt dann endlich die Ereignisschleife zu laufen.
‫Und wieder mehr zum Event in Loop im nächsten Video.
‫Was Sie vorerst wissen müssen, ist, dass in
‫der Ereignisschleife die meiste Arbeit in Ihrer App erledigt wird.
‫Es ist also wirklich das Herz der gesamten Node-Architektur.
‫Aber hier ist der Haken, manche Aufgaben sind tatsächlich zu schwer.
‫Sie sind zu teuer, um in der Ereignisschleife ausgeführt zu werden,
‫da sie dann den einzelnen Thread blockieren würden.
‫Hier kommt also der Thread-Pool ins Spiel,
‫der ebenso wie die
‫Ereignisschleife Node. js von der libuv-Bibliothek,
‫über die wir zuvor gesprochen haben.
‫Der Thread-Pool bietet uns also vier zusätzliche
‫Threads, die vollständig vom einzelnen Hauptthread getrennt sind.
‫Und wir können es tatsächlich auf bis zu 128 Threads konfigurieren.
‫Aber normalerweise reichen diese vier.
‫Diese Fäden bildeten also zusammen einen Fadenpool.
‫Und die Ereignisschleife kann
‫dann automatisch schwere Aufgaben in den Thread-Pool auslagern.
‫Und das alles geschieht automatisch hinter den Kulissen.
‫Es sind nicht wir Entwickler, die
‫entscheiden, was in den Thread-Pool geht und was nicht.
‫Jetzt sind die teuren Aufgaben, die ausgelagert
‫werden, alle Operationen, die sich mit Dateien befassen,
‫alles, was mit Kryptographie zu tun hat, wie
‫das Caching von Passwörtern, dann alle Komprimierungssachen und auch
‫DNS-Lookups, die im Grunde
‫Web-Domains mit ihren entsprechenden echten IP-Adressen abgleichen.
‫Dies ist also das
‫Zeug, das den Hauptthread am leichtesten blockieren würde.
‫Node sorgt also dafür, dass sie
‫automatisch in den Thread-Pool ausgelagert
‫werden, wo sie unsere Ereignisschleife nicht blockieren.
‫Und das ist das Wichtigste, was
‫ich möchte, dass Sie von diesem Video behalten.
‫Lassen Sie uns nun weitermachen und über die Ereignisschleife selbst sprechen.