Junior — Middle
Hoe dwing je de Go-planner om de contextwisseling naar een andere goroutine uit te voeren?
sobes.tech AI
Antwoord van AI
In Go wordt de functie runtime.Gosched() gebruikt om de contextwisseling tussen goroutines af te dwingen. Het geeft de scheduler aan dat de huidige goroutine klaar is om de processor aan andere goroutines over te dragen, zodat zij kunnen worden uitgevoerd.
Voorbeeld van gebruik:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // draag over aan de scheduler
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Hoofdgoroutine -", i)
runtime.Gosched() // draag over aan de scheduler
}
}
Op deze manier maakt runtime.Gosched() het mogelijk om expliciet andere goroutines de kans te geven om uit te voeren, zonder de huidige te blokkeren.