Sobes.tech
Junior — Middle

Чӣ гуна метавон планнери Go-ро маҷбур кард, ки ивазкунии контекстро ба дигар goroutine иҷро кунад?

sobes.tech AI

Ҷавоб аз AI

В Go тілінде, горутиналар арасында контекстті ауыстыруды мәжбүрлеу үшін runtime.Gosched() функциясы пайдаланылады. Бұл жоспарлаушыға ағымдағы горутинаның басқа горутиналарға процессорды беру үшін дайын екенін хабарлайды, олар орындалуы үшін.

Қолдану мысалы:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Горутин 1 -", i)
            runtime.Gosched() // жоспарлаушыға беру
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Негізгі горутин -", i)
        runtime.Gosched() // жоспарлаушыға беру
    }
}

Осылайша, runtime.Gosched() басқа горутиналарға орындалу мүмкіндігін ашық түрде береді, ағымдағыны блоктамай.