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() басқа горутиналарға орындалу мүмкіндігін ашық түрде береді, ағымдағыны блоктамай.