Heim >Backend-Entwicklung >Golang >Was ist der Unterschied zwischen Parallelität und Parallelität in Go?

Was ist der Unterschied zwischen Parallelität und Parallelität in Go?

青灯夜游
青灯夜游Original
2023-01-10 18:13:591546Durchsuche

Der Unterschied zwischen Parallelität und Parallelität: 1. Parallelität bedeutet, den Prozessoren Aufgaben zur Verarbeitung zu unterschiedlichen Zeitpunkten zuzuweisen, während Parallelität bedeutet, dass jede Aufgabe jedem Prozessor unabhängig voneinander erledigt wird. Die Aufgaben werden nicht gleichzeitig ausgeführt, sondern parallel, zum gleichen Zeitpunkt. Die Aufgaben müssen gleichzeitig ausgeführt werden.

Was ist der Unterschied zwischen Parallelität und Parallelität in Go?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

Beim Verständnis des Konzepts der Parallelität ist immer ein weiteres Konzept der Parallelität im Spiel. Lassen Sie uns den Unterschied zwischen Parallelität und Parallelität verstehen.

Parallelität: Übergabe von Aufgaben an den Prozessor zur Bearbeitung zu unterschiedlichen Zeitpunkten. Zum gleichen Zeitpunkt werden Aufgaben nicht gleichzeitig ausgeführt.

Parallelität: Weisen Sie jede Aufgabe jedem Prozessor zu, um sie unabhängig zu erledigen. Zum gleichen Zeitpunkt müssen die Aufgaben gleichzeitig ausgeführt werden.

Parallelität ist keine Parallelität. Parallelität bedeutet, dass verschiedene Codeteile gleichzeitig auf verschiedenen physischen Prozessoren ausgeführt werden. Der Schlüssel zur Parallelität liegt darin, viele Dinge gleichzeitig zu erledigen, und Parallelität bezieht sich auf die gleichzeitige Verwaltung vieler Dinge. Diese Dinge dürfen nur zur Hälfte erledigt werden, bevor sie angehalten werden, um andere Dinge zu erledigen.

In vielen Fällen ist Parallelität besser als Parallelität, da die Gesamtressourcen des Betriebssystems und der Hardware im Allgemeinen sehr gering sind, das System jedoch dabei unterstützen kann, viele Dinge gleichzeitig zu erledigen. Diese Philosophie, „mit weniger Ressourcen mehr zu erreichen“, ist auch die Philosophie, die dem Design der Go-Sprache zugrunde liegt.

Wenn Sie Goroutinen parallelisieren möchten, müssen Sie mehr als einen logischen Prozessor verwenden. Wenn mehrere logische Prozessoren vorhanden sind, verteilt der Scheduler die Goroutinen gleichmäßig auf jeden logischen Prozessor. Dies führt dazu, dass die Goroutine in einem anderen Thread ausgeführt wird. Um jedoch wirklich Parallelität zu erreichen, müssen Benutzer ihre Programme auf Maschinen mit mehreren physischen Prozessoren ausführen. Andernfalls werden Goroutinen auch dann gleichzeitig auf demselben physischen Prozessor ausgeführt, wenn die Go-Sprache beim Ausführen mehrere Threads verwendet, und der Paralleleffekt wird nicht erzielt.

Die folgende Abbildung zeigt den Unterschied zwischen der gleichzeitigen Ausführung von Goroutinen auf einem logischen Prozessor und der parallelen Ausführung von zwei gleichzeitigen Goroutinen auf zwei logischen Prozessoren. Der Scheduler enthält einige clevere Algorithmen, die mit der Veröffentlichung der Go-Sprache aktualisiert und verbessert werden. Es wird daher nicht empfohlen, die Standardeinstellungen für logische Prozessoren zur Sprachlaufzeit blind zu ändern. Wenn Sie wirklich glauben, dass eine Änderung der Anzahl logischer Prozessoren die Leistung verbessert, können Sie auch kleine Anpassungen an den Laufzeitparametern der Sprache vornehmen.

Was ist der Unterschied zwischen Parallelität und Parallelität in Go?
Abbildung: Der Unterschied zwischen Parallelität und Parallelität

Die Go-Sprache kann eine parallele Ausführung erreichen, wenn die Anzahl der GOMAXPROCS der Anzahl der Aufgaben entspricht, aber unter normalen Umständen wird sie gleichzeitig ausgeführt.

【Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Parallelität und Parallelität in Go?. 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