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() թույլ է տալիս բացահայտորեն տալ հնարավորությունը մյուս գորուտիններին կատարելագործվել, առանց ընթացիկին բլոկավորելու։