Heim  >  Artikel  >  Web-Frontend  >  Läuft der Knoten alle Single-Threaded?

Läuft der Knoten alle Single-Threaded?

WBOY
WBOYOriginal
2022-06-15 16:57:452461Durchsuche

Der Knoten wird in einem einzelnen Thread ausgeführt und verwendet einen asynchronen, nicht blockierenden Single-Thread-Modus. Genau genommen bedeutet Single-Threading, dass im Knoten nur eine JS-Engine ausgeführt wird Es gibt auch unabhängige Threads für die Ausführung von Threads und anderen asynchronen Vorgängen, und der Knoten ist standardmäßig ein Single-Thread. Ein „node.js“ kann keine Multi-Core-Ressourcen nutzen.

Läuft der Knoten alle Single-Threaded?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, NodeJS-Version 12.19.0, Dell G3-Computer.

Laufen alle Knoten in einem einzigen Thread?

Der Knoten wird in einem einzigen Thread ausgeführt und verwendet den asynchronen, nicht blockierenden Single-Thread-Modus.

Wenn es um Knoten geht, fallen uns sofort Wörter wie Single-Threaded, asynchrones IO und ereignisgesteuert ein. Als Erstes muss geklärt werden, ob es sich bei dem Knoten wirklich um einen Single-Threaded-Knoten handelt. Wo werden dann asynchrone E/A-Vorgänge und geplante Ereignisse (setTimeout, setInterval usw.) ausgeführt?

Streng genommen ist der Knoten eigentlich kein Single-Threaded. Es gibt viele Arten von Threads im Knoten, darunter:

JS-Engine-Ausführungsthread

Timer-Thread (setTimeout, setInterval)

asynchroner HTTP-Thread (Ajax)

Was wir normalerweise als einzelnen Thread bezeichnen, bedeutet, dass es nur einen im Knoten gibt js-Engine läuft im Hauptthread. Andere asynchrone E/A- und ereignisgesteuerte verwandte Threads verwenden libuv, um interne Thread-Pools und Thread-Planung zu implementieren. In libv gibt es eine Ereignisschleife, und das Durchschalten der Ereignisschleife kann einen ähnlichen Effekt wie Multithreading erzielen. Einfach ausgedrückt verwaltet Event Loop einen Ausführungsstapel und eine Ereigniswarteschlange. Wenn im aktuellen Ausführungsstapel asynchrone E/A- und Timerfunktionen gefunden werden, werden diese asynchronen Rückruffunktionen in die Ereigniswarteschlange gestellt. Nachdem die Ausführung des aktuellen Ausführungsstapels abgeschlossen ist, werden die asynchronen Rückruffunktionen in der Ereigniswarteschlange in einer bestimmten Reihenfolge aus der Ereigniswarteschlange ausgeführt.

Läuft der Knoten alle Single-Threaded?

In der obigen Abbildung ist der gesamte Prozess vom Ausführungsstapel über die Ereigniswarteschlange bis hin zur Ausführung der Rückruffunktion in einer bestimmten Reihenfolge in der Ereigniswarteschlange eine vereinfachte Version der Ereignisschleife. Darüber hinaus wird beim Ausführen der Rückruffunktion auch ein Ausführungsstapel generiert. Asynchrone Funktionen können innerhalb der Rückruffunktion verschachtelt sein, was bedeutet, dass der Ausführungsstapel verschachtelt ist.

Mit anderen Worten, der einzelne Thread im Knoten bedeutet, dass die JS-Engine nur auf dem einzigen Hauptthread ausgeführt wird. Andere asynchrone Vorgänge werden ebenfalls von unabhängigen Threads ausgeführt, die dem Multithreading ähneln Poolplanung. Threads sind die kleinsten Prozesse, daher ist der Knoten auch ein einzelner Prozess. Dies erklärt, warum der Knoten Single-Threaded und Single-Process ist.

Empfohlenes Lernen: „nodejs-Video-Tutorial

Das obige ist der detaillierte Inhalt vonLäuft der Knoten alle Single-Threaded?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn