Heim  >  Artikel  >  Backend-Entwicklung  >  Ist Golang ein Einzelprozess?

Ist Golang ein Einzelprozess?

coldplay.xixi
coldplay.xixiOriginal
2020-07-22 09:25:294336Durchsuche

Golang ist kein einzelner Prozess, sondern ein Multithread-Modell. Im Allgemeinen haben Go-Prozesse und Kernel-Threads eine Viele-zu-Viele-Entsprechung. Es muss Multithreading sein.

Ist Golang ein Einzelprozess?

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 Multi-Thread-Modell Die Planung von Coroutinen erfolgt durch Gos Laufzeitentscheidung und betont, dass Entwickler Kanäle für die Synchronisierung zwischen Coroutinen verwenden sollten.

Da die Sprachebene nicht offen ist, können Sie mehrere go routine in einem Thread erstellen Die Anzahl der CPU-Kerne wird natürlich durch runtime bestimmt.

In Bezug auf die Planung von goroutine werde ich nur über das GMP-Modell sprechen, das auf M-Threads ausgeführt wird. wird überprüft. Die ausführbare Warteschlange auf P enthält ausführbare Goroutinen. 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 , also das Betriebssystem Die Anzahl der Threads erhöht sich nicht, 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.

Verwandte Lernempfehlungen: Go-Sprachtutorial

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