Sobes.tech
Junior — Middle

Kuidas sundida Go planeerijat teostama konteksti vahetust teise gorutina?

sobes.tech AI

Vastus AI-lt

Go keeles kasutatakse runtime.Gosched() funktsiooni, et sunniviisiliselt vahetada konteksti gorutinade vahel. See teavitab planeerijat, et käimasolev gorutin on valmis protsessorit teistele gorutinadele üle andma, võimaldades neil täidetud saada.

Kasutusnäide:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Goroutine 1 -", i)
            runtime.Gosched() // üleandmine planeerijale
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Peamine goroutine -", i)
        runtime.Gosched() // üleandmine planeerijale
    }
}

Sellisel viisil võimaldab runtime.Gosched() selgelt anda võimaluse teistele gorutinadele täitmiseks, ilma et see blokeeriks käimasolevat gorutinit.