Golang ist ein Multithread-Modell. Im Allgemeinen entsprechen Go-Prozesse und Kernel-Threads vielen-zu-vielen. mit Gewinde.
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
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!