Frage

Ich habe zwei Noob -Fragen:

1) Warum wird Node.js in einem einzigen Thread ausgeführt? Warum nicht nur den Prozess selbst verwendet? Oder was sind die Vorteile, es in einem Thread statt im Prozess auszuführen?

2) Was passiert, wenn ein Thread in einem Prozess abgestürzt ist (ich bin mir bewusst, dass eine unbehandelte Ausnahme den Prozess zum Ausscheiden bewirkt), aber was passiert, wenn sie richtig gefangen ist? oder mit Ausnahmen wie schwebenden Punktausnahmen. Wird der Prozess auch abgestürzt?

War es hilfreich?

Lösung

Ich denke, Sie sind ein bisschen verwirrt darüber, was in diesem Fall "einzelner Thread" bedeutet. Node.js selbst verwendet mehrere Threads im Hintergrund, um ansonsten asynchronen Aufrufen zu verarbeiten.

Node.js Core, die JavaScript -Engine, ist ein einzelnes Gewinde. Das Fehlen von Multi -Threading und die Verfügbarkeit einer Ereignisschleife erleichtern die Programmierung erheblich. Kurz gesagt, Sie müssen sich nicht mit all den Probleme mit der Parallelität befassen, die Multi Threading mit sich bringt. Ihr Code ist auf diese Weise viel deterministischer.

Falls ein Thread abstürzt, ist es völlig irrelevant, ob dies das einzige oder einer von vielen war. Wenn Code das Beste stürzt, ist das Beste, was Sie hoffen können, dass das Programm damit stirbt. teilweise korrupter Zustand. Stellen Sie sich vor, der Thread, der zum Speichern von Daten auf der Festplatte speichert, und jetzt wird Ihr Programm weiterhin ausgeführt, ohne jemals wieder zu sparen.

Andere Tipps

  1. node.js ist extrem leicht und wird nur bei Bedarf aufgerufen. So behandelt jeder Thread eine Anfrage und beendet sich dann. Sie, wenn Sie anrufen /myPage, node.js verarbeiten die Anfrage und beenden dann. Dies führt zu einer besseren Leistung, während ein kleiner Fußabdruck beibehalten wird
  2. Wenn es eine Ausnahme gibt und sie ordnungsgemäß behandelt wird, wird ein Fehler entsprechend der Definition wirft. JavaScript ist alles oder nichts Sprache. Jeder Fehler führt dazu, dass JavaScript einen Fehler und Absturz bringt. Aus diesem Grund müssen Sie sicherstellen, dass Sie alle möglichen Fehler behandeln.

Das Ausführen eines Programms in einem Prozess oder einzelner Threaded ist dasselbe. Jeder Prozess hat einen Hauptfaden. Abhängig von der Programmiersprache und -plattform können zusätzliche Threads verwendet werden, um Teile Ihres Programms gleichzeitig auszuführen. Node.js hat keine Möglichkeit, zusätzliche Threads zu starten.

Auf diese Weise haben Sie nicht die Möglichkeit, Teile Ihres Programms parallel zu betreiben, neben neuen Prozessen. Mehrere Threads in einem einzelnen Prozess teilen den gleichen Speicher, während Prozesse dies nicht tun. Wenn Sie Informationen zwischen den Prozessen freigeben müssen, müssen Sie eine Nachrichtenübergabe verwenden.

Der Nachteil des Verabschiedung von Nachrichten ist, dass sie langsamer ist als das Teilen von Informationen über den Speicher. Der Vorteil ist, dass Sie nicht über den veränderlichen Zustand der Objekte in Ihrem Gedächtnis und darüber, wie Sie sicherstellen müssen, dass diese Objekte nicht inkonsistent werden, argumentieren müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top