„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Die Auswirkungen von `runtime.gched ()` vor und nach go 1.5 on Go -Programmausführung

Die Auswirkungen von `runtime.gched ()` vor und nach go 1.5 on Go -Programmausführung

Gepostet am 2025-04-14
Durchsuche:752

How Does `runtime.Gosched()` Impact Go Program Execution Before and After Go 1.5?

How Gosched Affects the Execution of Go Programs

Problem

In Go versions prior to 1.5, a piece of code involving runtime.Gosched() was observed to affect the output of a program:

func say(s string) {
    for i := 0; i  

output mit runchtime.goch ():

hello
world
hello
world
hello
world
hello
world
hello

output ohne runstime.goched ():

hello
hello
hello
hello
hello

Erklärung

in Go -Versionen vor 1.5, runchtime.gosched () ergab, dass es anderen Goroutinen explizit die Kontrolle ergab, wenn sie angerufen werden. Während GO -Programme standardmäßig auf einem einzelnen Betriebssystem ausgeführt wurden, erlaubte Runtime.goched () dem Scheduler, die Ausführung zwischen Goroutines zu wechseln. In dem obigen Codebeispiel wurde also die "Welt" -Autausgabe nur dann erschien, wenn die Laufzeit. Go kann mehrere Betriebssystem -Threads erstellen, um goroutines auszuführen.

mit gomaxprocs, die auf einen Wert von mehr als 1 eingestellt sind, können parallel ausführen. Im Gegensatz zu präventiven Multitasking -Systemen müssen Goroutinen jedoch noch explizit die Kontrolle liefern, damit andere Goroutinen ausführen können. Dies liegt daran, dass Go kooperatives Multitasking verwendet, wobei Goroutines die Kontrolle freiwillig dem Scheduler ergeben. Dies kann zu unvorhersehbaren Ausgangsmustern führen, wie im obigen Beispiel zu sehen ist, wenn GomaxProcs auf 2 gesetzt wurde.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3