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