Sobes.tech
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-ი განაწილებს დავალებებს და მათ შორის გადართვას ახორციელებს.