Sobes.tech
Senior

რა არის გორუტინა? როგორ განსხვავდება სისტემური თრედისგან? ისაუბრე Go (GMP) დაგეგმვაზე.

sobes.tech AI

პასუხი AI-სგან

Goroutine — ეს არის მსუბუქი შესრულების ნაკადი ენის Go-ში, რომელსაც მართავს Go-ის რანთაიმი და არა ოპერაციული სისტემა. განსხვავებით სისტემური ნაკადებისგან, goroutine-ებს აქვთ გაცილებით მცირე სტეკის ზომა (დაიწყება რამდენიმე კილობაიტიდან და შეუძლია დინამიურად გაიზარდოს), რაც საშუალებას აძლევს ერთდროულად გამოართვას ათასობით ან甚至 მილიონობით goroutine-ი დაბალი ხარჯებით.

სისტემური ნაკადები შექმნილია და დაგეგმილია ოპერაციული სისტემის მიერ, აქვთ ფიქსირებული დიდი სტეკი და უფრო ძვირი კონტექსტის გადართვის ოპერაციები.

Go-ის დაგეგმვა ეფუძნება GMP მოდელს:

  • G (goroutine) — თავად goroutine, შესრულების ერთეული.
  • M (მექანიზმი) — სისტემური ნაკადი (OS thread), რომელზეც მიმდინარეობს goroutine-ების შესრულება.
  • P (პროცესორი) — ლოგიკური პროცესორი, რესურსი, რომელიც საჭიროა goroutine-ის შესრულებისთვის M-ზე.

P მართავს მზადყოფნის რიგს (G). M შეუძლია ერთდროულად მხოლოდ ერთი goroutine-ის შესრულება, მაგრამ მრავალი M და P-ის არსებობით, დაგეგმვა ეფექტურად ნაწილდება goroutine-ებს სისტემური ნაკადების შორის, უზრუნველყოფს კონკურენციას და პარალელიზმს.

ეს მიდგომა საშუალებას აძლევს Go-ს ეფექტურად გამოიყენოს სისტემის რესურსები და მასშტაბირდეს მრავალპროცესორულ სისტემებზე.