Sobes.tech
Junior — Middle

Jak wymusić na planisty Go wykonanie przełączenia kontekstu na inną gorutynę?

sobes.tech AI

Odpowiedź od AI

W Go, do wymuszenia zmiany kontekstu między gorutynami używa się funkcji runtime.Gosched(). Informuje ona planistę, że bieżąca gorutyna jest gotowa do oddania procesora innym gorutynom, umożliwiając im wykonanie się.

Przykład użycia:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Gorutyna 1 -", i)
            runtime.Gosched() // oddajemy planistę
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Gorutyna główna -", i)
        runtime.Gosched() // oddajemy planistę
    }
}

W ten sposób runtime.Gosched() pozwala wyraźnie dać innym gorutynom szansę na wykonanie, nie blokując bieżącej.