Heim >Backend-Entwicklung >Golang >Wie erstellt der Go-Scheduler neue M und P, wenn Goroutinen Blockierungsvorgänge ausführen?
Wenn der Go-Scheduler neue M und P im GMP-Modell erstellt
Im GMP-Modell (Goroutine, Maschine, Prozessor) von Go der Scheduler verwaltet die Erstellung von M (Maschine) und P (Prozessor) basierend auf bestimmten Bedingungen.
M-Erstellung
M wird als Reaktion auf bestimmte Ereignisse erstellt, wie zum Beispiel:
P-Erstellung
P wird beim Programmstart basierend auf der Umgebungsvariablen GOMAXPROCS erstellt, die die angibt maximale Anzahl verfügbarer P. Der Standardwert ist die Anzahl der logischen CPUs im System.
Beispielanalyse
In Ihrem Beispielcode haben Sie zwei Stapel von Goroutinen Ausführen von Datenbankoperationen. Jede Goroutine führt einen blockierenden E/A-Vorgang aus.
Daher erstellt der Scheduler in Ihrem Fall mehr als 8 M für den zweiten Stapel von Goroutinen, weil Die Vorgänge blockieren. Das P wird basierend auf dem GOMAXPROCS-Wert auf 1 begrenzt, aber M wird nach Bedarf dynamisch erstellt.
Zusätzliche Ressourcen
Weiteres Verständnis finden Sie im Folgenden Ressourcen:
Das obige ist der detaillierte Inhalt vonWie erstellt der Go-Scheduler neue M und P, wenn Goroutinen Blockierungsvorgänge ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!