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() საშუალებას აძლევს სხვა გორუტინებს შესრულების შესაძლებლობას, უშუალოდ მიმდინარე გორუტინს ბლოკის გარეშე.