Heim >häufiges Problem >Ist Golang Multiprozess?

Ist Golang Multiprozess?

百草
百草Original
2023-07-07 10:18:151576Durchsuche

golang ist ein Multiprozess und sein Thread-Modell ist das MPG-Modell. Im Allgemeinen haben Go-Prozesse und Kernel-Threads eine Viele-zu-Viele-Entsprechung, daher muss es zunächst Multithread sein. Golang verfügt über ein sogenanntes M-Ratio-N-Modell, mit dem N-Threads erstellt werden können. Im Allgemeinen ist N viel größer als M. Es handelt sich jedoch im Wesentlichen um ein Multithread-Modell Es wird betont, dass Entwickler Kanäle für die Synchronisierung zwischen Coroutinen verwenden sollten.

Ist Golang Multiprozess?

Die Betriebsumgebung dieses Artikels: Windows 10-System, go1.20-Version, DELL G3-Computer.

golang ist kein einzelner Prozess, sondern ein Multithread-Prozess.

Golang verfügt über ein sogenanntes M-Ratio-N-Modell. N-go-Routinen können unter M-Threads erstellt werden. Im Allgemeinen ist N viel größer als M. Es handelt sich im Wesentlichen um ein Multithread-Modell, aber die Planung von Coroutinen wird durch bestimmt Die Laufzeit von Go legt Wert auf die Entwicklung. Leser sollten Kanäle für die Synchronisierung zwischen Coroutinen verwenden.

Da die Sprachebene nicht offen ist, können Sie sie als Multi-Coroutine-Modell verstehen. Im Allgemeinen können so viele Threads wie CPU-Kerne erstellt werden Natürlich wird es tatsächlich immer noch von der Laufzeit bestimmt.

Was die Planung von Goroutine betrifft, werde ich nur über das GMP-Modell sprechen, das auf M-Threads ausgeführt wird. Jedes Mal, wenn eine Aufgabe ausgeführt wird, wird die ausführbare Warteschlange auf dem aktuellen P (Prozessor) überprüft. Es befinden sich ausführbare Goroutinen in der Warteschlange. Sobald auf dem aktuellen P keine ausführbare Goroutine vorhanden ist, wird die Goroutine in der ausführbaren Warteschlange eines anderen P gestohlen.

Theoretisch ist die Erstellung von Goroutinen nur durch den Speicher begrenzt. Bei einem Thread mit 2 MB Speicherplatz kann dies theoretisch problemlos 1.000 sein Die Anzahl der Betriebssystem-Threads nimmt nicht zu, wenn die Anzahl der erstellten Goroutinen zunimmt. Die Thread-Planung ist für Go relativ leistungsintensiv. Häufiges Wechseln der Zeitpläne erfolgt nur zwischen Goroutinen, und Threads verwalten nur die gleiche Anzahl aktiver Threads wie CPUs.

Über Prozesse und Threads

Ein Prozess ist ein Ausführungsprozess eines Programms im Betriebssystem. Er ist die Grundeinheit für die Ressourcenzuweisung und -planung durch das System Die Ausführung des Programms ist die Grundeinheit der Ressourcenzuweisung und -verwaltung im Prozess. Ein Prozess hat mindestens 5 Grundzustände: Anfangszustand, Ausführungszustand, Wartezustand, Bereitschaftszustand und Beendigungszustand.

Laienhaft ausgedrückt: Ein Prozess ist ein ausführendes Programm.

2. Thread

Ein Thread ist eine Ausführungsinstanz eines Prozesses und die kleinste Einheit der Programmausführung. Es handelt sich um eine Grundeinheit, die kleiner als ein Prozess ist und unabhängig ausgeführt werden kann.

Laienhaft ausgedrückt: Ein Prozess kann mehrere Threads erstellen und mehrere Threads im selben Prozess können gleichzeitig ausgeführt werden. Damit ein Programm ausgeführt werden kann, muss es mindestens einen Prozess geben.

Ist Golang Multiprozess?

Das obige ist der detaillierte Inhalt vonIst Golang Multiprozess?. 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