Sobes.tech
Junior — Middle

Kaip priversti Go planuotoją perjungti kontekstą į kitą gorutina?

sobes.tech AI

Atsakymas iš AI

Go kalboje, norint priverstinai keisti kontekstą tarp gorutinų, naudojama funkcija runtime.Gosched(). Ji praneša planuotojui, kad dabartinė gorutina yra pasiruošusi perduoti procesorių kitoms gorutinoms, leidžiant joms būti vykdomoms.

Naudojimo pavyzdys:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Gorutina 1 -", i)
            runtime.Gosched() // perduodame planuotojui
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Pagrindinė gorutina -", i)
        runtime.Gosched() // perduodame planuotojui
    }
}

Šiuo būdu, runtime.Gosched() leidžia aiškiai suteikti galimybę kitoms gorutinoms būti vykdomoms, neblokuojant dabartinės.