Sobes.tech
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.