Junior — Middle
როგორ ხორციელდება მართვა და დავალებების განაწილება გორუტინებს შორის Go ენისთვის?
sobes.tech AI
პასუხი AI-სგან
Go ენაში, დავალებების მართვა და განაწილება გორუტინებს შორის ხორციელდება Go-ის შიდა გრაფიკით (scheduler), რომელიც ინტეგრირებულია Go-ის runtime-ში. გორუტინები — ეს მსუბუქი ნაკადებია, რომლებიც იწყება საკვანძო სიტყვა go-ს გამოყენებით.
Go-ის გრაფიკი გორუტინებს ნაწილებს აყოფს სისტემურ ნაკადებზე (OS threads) და მართავს მათი შესრულებას, უზრუნველყოფს კონკურენციასა და პარალელიზმს. ის იყენებს M:N მოდელს, სადაც M — სისტემური ნაკადების რაოდენობა, N — გორუტინების რაოდენობა.
გორუტინის შექმნის მაგალითი:
func sayHello() {
fmt.Println("გამარჯობა გორუტინიდან")
}
func main() {
go sayHello() // იწყებს გორუტინას
time.Sleep(time.Second) // ელოდება, რომ გორუტინა შესრულდეს
}
ამ გზით, დეველოპერი უბრალოდ იწყებს გორუტინას, ხოლო Go-ის runtime-ი განაწილებს დავალებებს და მათ შორის გადართვას ახორციელებს.