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