Heim > Backend-Entwicklung > Golang > Ist Golang ein Multithread-Modus?

Ist Golang ein Multithread-Modus?

coldplay.xixi
Freigeben: 2020-07-22 09:31:36
Original
5838 Leute haben es durchsucht

Golang ist ein Multithread-Modell. Im Allgemeinen entsprechen Go-Prozesse und Kernel-Threads vielen-zu-vielen. mit Gewinde.

Ist Golang ein Multithread-Modus?

Golang ist ein Multithread-Modus.

Da p und m in gmp p an m Kernel-Threads binden, wird die maximale Anzahl von p durch GOPROCESS bestimmt, und die Anzahl der M Kernel-Threads wird durch go auf 10 KB begrenzt, ist aber fällig Aus Kernel-Gründen kann es nicht so viel tun, daher kann diese Einschränkung so behandelt werden, als ob sie nicht existierte. Machen Sie ein Bild zur Verdeutlichung

Ist Golang ein Multithread-Modus?

Golang verfügt über ein sogenanntes M-Ratio-N-Modell. Unter M-Threads können N-Go-Routinen erstellt werden Im Wesentlichen handelt es sich um ein Multithread-Modell, aber die Planung von Coroutinen wird durch Gos runtime bestimmt, wobei betont wird, 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 Anzahl der CPU-Kerne wird erstellt. Die Anzahl wird natürlich tatsächlich durch die Laufzeit 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 Multithread-Modus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage