Sobes.tech
Junior — Middle

Cum poți forța planificatorul Go să efectueze schimbarea de context către o altă gorutină?

sobes.tech AI

Răspuns de la AI

În Go, pentru a forța schimbarea de context între goroutines, se folosește funcția runtime.Gosched(). Aceasta informează planificatorul că goroutine-ul curent este gata să cedeze procesorul altor goroutines, permițându-le să fie executate.

Exemplu de utilizare:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Goroutine 1 -", i)
            runtime.Gosched() // cedăm planificatorului
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Goroutine principală -", i)
        runtime.Gosched() // cedăm planificatorului
    }
}

Astfel, runtime.Gosched() permite în mod explicit altor goroutines să fie executate, fără a bloca goroutine-ul curent.