Junior — Middle
Wie kann man den Go-Planer dazu zwingen, den Kontextwechsel zu einer anderen Goroutine durchzuführen?
sobes.tech KI
Antwort von AI
In Go wird die Funktion runtime.Gosched() verwendet, um den Kontextwechsel zwischen Goroutines erzwingen. Sie teilt dem Scheduler mit, dass die aktuelle Goroutine bereit ist, die CPU an andere Goroutines abzugeben, damit diese ausgeführt werden können.
Beispiel:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // Scheduler abgeben
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Hauptgoroutine -", i)
runtime.Gosched() // Scheduler abgeben
}
}
Auf diese Weise ermöglicht runtime.Gosched(), anderen Goroutines explizit die Ausführung zu erlauben, ohne die aktuelle zu blockieren.