Junior — Middle
Hogyan lehet kényszeríteni a Go ütemezőjét, hogy más goroutine-ra váltson?
sobes.tech MI
Válasz az MI-től
Go nyelvben a runtime.Gosched() függvény használható a goroutine-k közötti kontextusváltás kényszerítésére. Ez jelzi a ütemezőnek, hogy az aktuális goroutine készen áll arra, hogy átadja a processzort más goroutine-knak, lehetővé téve azok végrehajtását.
Használati példa:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // átadjuk az ütemezőnek
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Fő goroutine -", i)
runtime.Gosched() // átadjuk az ütemezőnek
}
}
Így a runtime.Gosched() lehetővé teszi más goroutine-ok végrehajtását kifejezetten, anélkül, hogy blokkolná az aktuálisat.