Heim >Web-Frontend >Front-End-Fragen und Antworten >Was ist der Unterschied zwischen Prozessen und Threads in JavaScript?
Unterschied: Prozesse haben unabhängige Adressräume. Nach einem Prozessabsturz hat dies keine Auswirkungen auf andere Prozesse im geschützten Modus. Threads sind lediglich unterschiedliche Ausführungspfade in einem Prozess (ein Prozess besteht aus einem oder mehreren Threads). Speicherplatz (gemeinsamer Speicher) zwischen Threads. Der Tod eines Threads entspricht dem Tod des gesamten Prozesses.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Threads werden unterteilt in: Single-Thread und Multi-Thread
Single-Thread: Ein laufendes Programm (das heißt, es läuft) hat mindestens einen Thread. Ein Programm mit nur einem Der Hauptthread wird als Single-Thread-Programm bezeichnet. Der Hauptthread ist für die Ausführung aller Codes verantwortlich (Anzeige und Aktualisierung der Benutzeroberfläche, Netzwerkanforderungen, lokaler Speicher usw.). Diese Codes können nur sequentiell und nicht gleichzeitig ausgeführt werden.
Multithreading: Ein Programm mit mehreren Threads wird als Multithread-Programm bezeichnet. Die Unterthreads und der Hauptthread sind unabhängige laufende Einheiten andere und können gleichzeitig ausgeführt werden.
Der Unterschied zwischen Single-Thread und Multi-Thread:
Single-Thread: Es gibt nur einen Thread, der Code wird sequentiell ausgeführt und es kann leicht zu Codeblockierungen (seitenangehaltene Animationen) kommen.
Multi-Thread; Thread: Es gibt mehrere Threads, und die Threads werden unabhängig voneinander ausgeführt, wodurch Codeblockierungen effektiv vermieden und die Laufleistung des Codes verbessert werden können.
ProzessDefinition: Ein Prozess ist ein fortlaufendes Programm. Es ist ein dynamisches Konzept. Es ist die Grundeinheit für die Ressourcenzuweisung und -planung im System.
Ein Programm enthält mindestens einen Prozess und ein Prozess enthält mindestens einen Thread.
Mehrere Prozesse verfügen über einen unabhängigen Speicher, und Multi-Threads teilen sich den Speicher, sodass mehrere Threading verbessert die Betriebseffizienz;
Die Bedeutung von Multithreading besteht darin, dass mehrere Programme gleichzeitig ausgeführt werden können, das System Multithreading jedoch nicht als mehrere unabhängige Anwendungen betrachtet.
Beispiele:
1. Das Herzstück des Computers ist die CPU, die alle Rechenaufgaben übernimmt. Es ist wie eine Fabrik, die ständig in Betrieb ist.
2. Gehen Sie davon aus, dass der Strom der Fabrik begrenzt ist und jeweils nur eine Werkstatt versorgt werden kann. Mit anderen Worten: Wenn eine Werkstatt ihre Arbeit aufnimmt, müssen andere Werkstätten ihre Arbeit einstellen. Der Sinn dahinter ist, dass eine einzelne CPU jeweils nur eine Aufgabe ausführen kann.
3. Ein Prozess ist wie eine Fabrikhalle, er stellt eine einzelne Aufgabe dar, die die CPU bewältigen kann. Zu jedem Zeitpunkt führt die CPU immer einen Prozess aus, und andere Prozesse befinden sich in einem nicht ausgeführten Zustand.
4. In einer Werkstatt können viele Arbeiter sein. Sie arbeiten zusammen, um eine Mission zu erfüllen.
5. Fäden sind wie Arbeiter in einer Werkstatt. Ein Prozess kann mehrere Threads umfassen.
6. Der Werkstattraum wird von den Arbeitern gemeinsam genutzt. Viele Räume können beispielsweise von jedem Arbeiter betreten und verlassen werden. Dies symbolisiert, dass der Speicherplatz eines Prozesses gemeinsam genutzt wird und jeder Thread diese gemeinsam genutzten Speicher nutzen kann.
7. Allerdings ist die Größe jedes Zimmers unterschiedlich und einige Zimmer bieten maximal Platz für eine Person, wie zum Beispiel die Toilette. Wenn Menschen drinnen sind, kann niemand sonst hineingehen. Das bedeutet, dass, wenn ein Thread gemeinsam genutzten Speicher nutzt, andere Threads auf dessen Ende warten müssen, bevor sie diesen Speicher nutzen können.
8. Eine einfache Möglichkeit, den Zutritt anderer zu verhindern, besteht darin, die Tür mit einem Schloss zu versehen. Diejenigen, die zuerst ankamen, schlossen die Tür ab, und diejenigen, die später kamen, sahen das Schloss und stellten sich an der Tür auf und warteten darauf, dass sich das Schloss öffnete, bevor sie eintraten. Dies wird als „gegenseitige Ausschlusssperre“ (gegenseitiger Ausschluss, abgekürzt als Mutex) bezeichnet, die verhindert, dass mehrere Threads gleichzeitig einen bestimmten Speicherbereich lesen und schreiben.
9. Es gibt auch einige Räume, in denen n Personen gleichzeitig Platz finden, wie zum Beispiel die Küche. Mit anderen Worten: Wenn die Anzahl der Personen größer als n ist, können die zusätzlichen Personen nur draußen warten. Dies ähnelt einigen Speicherbereichen, die nur von einer festen Anzahl von Threads verwendet werden können.
10. Die Lösung besteht derzeit darin, Schlüssel an die Tür zu hängen. Die Person, die hineingeht, nimmt einen Schlüssel und hängt ihn wieder auf, wenn sie herauskommt. Diejenigen, die später ankamen, stellten fest, dass die Schlüssel leer waren und wussten daher, dass sie an der Tür anstehen mussten. Dieser Ansatz wird "Semaphore" (Semaphore) genannt und dient dazu, sicherzustellen, dass mehrere Threads nicht miteinander in Konflikt geraten. Es ist nicht schwer zu erkennen, dass Mutex ein Sonderfall von Semaphor ist (wenn n=1). Mit anderen Worten: Letzteres kann Ersteres vollständig ersetzen. Da Mutex jedoch relativ einfach und effizient ist, wird dieses Design immer noch verwendet, wenn die Ressourcenexklusivität gewährleistet sein muss.
11. Das Design des Betriebssystems lässt sich auf drei Punkte reduzieren:
(1) In Form von Multiprozessen, die die gleichzeitige Ausführung mehrerer Aufgaben ermöglichen;
(2) In Form von Multithreading, das die Aufteilung einer einzelnen Aufgabe in verschiedene Teile ermöglicht. Ausführen;
(3) Bereitstellung eines Koordinationsmechanismus, um einerseits Konflikte zwischen Prozessen und Threads zu verhindern und andererseits die gemeinsame Nutzung von Ressourcen zwischen Prozessen und Threads zu ermöglichen .
Der Hauptunterschied zwischen Prozessen und Threads besteht darin, dass es sich um unterschiedliche Methoden zur Verwaltung von Betriebssystemressourcen handelt. Der Prozess verfügt über einen unabhängigen Adressraum. Nach einem Prozessabsturz hat dies keine Auswirkungen auf andere Prozesse im geschützten Modus, und Threads sind lediglich unterschiedliche Ausführungspfade in einem Prozess.
Threads haben ihre eigenen Stapel und lokalen Variablen, aber es gibt keinen separaten Adressraum zwischen Threads. Wenn ein Thread stirbt, bedeutet dies, dass der gesamte Prozess stirbt. Daher sind Multiprozessprogramme robuster als Multithread-Programme Das Umschalten von Prozessen verbraucht mehr Ressourcen und ist weniger effizient.
Aber für einige gleichzeitige Vorgänge, die die gleichzeitige Ausführung und gemeinsame Nutzung bestimmter Variablen erfordern, können nur Threads und keine Prozesse verwendet werden.
Weitere Programmierkenntnisse finden Sie unter: Programmiervideo! !
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Prozessen und Threads in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!