Sobes.tech
Junior — Middle

Go планировщусуна башка goroutine'га контекстти күчүрүүнү мажбурлоо үчүн кандай кылуу керек?

sobes.tech AI

AIден жооп

Go тилинде, goroutine'лер арасында контекстти алмаштырууну мажбурлоо үчүн runtime.Gosched() функциясы колдонулат. Бул планировщикке азыркы goroutine башка goroutine'лергө процессорду берүү даяр экенин билдирет жана алардын ишке ашуусуна мүмкүндүк берет.

Колдонуу мисалы:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Goroutine 1 -", i)
            runtime.Gosched() // планировщикке берүү
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Негизги goroutine -", i)
        runtime.Gosched() // планировщикке берүү
    }
}

Мындайча, runtime.Gosched() башка goroutine'лердин ишке киришине ачык мүмкүндүк берет, учурдагыны блоктогон жок.