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