Senior
როდის შეიქმნება გორუტინები, ისინი გო-ის დაგეგმვის ადგილობრივ ან გლობალურ რიგში მიდიან?
sobes.tech AI
პასუხი AI-სგან
Go-ში goroutine-ის შექმნისას, ის მოთავსებულია ადგილობრივ შესრულების რიგში (local run queue), რომელიც მიეკუთვნება კონკრეტულ M-ს (მოწყობილობა, სისტემური ნაკადი).
Go-ის გარემო იყენებს M:N მოდელს, სადაც M არის სისტემური ნაკადები, G კი goroutine-ები. თითოეულ M-ს აქვს თავისი ადგილობრივი goroutine-ის რიგი შესრულებისთვის. თუ ადგილობრივი რიგი გადატვირთულია ან ცარიელია, დაგეგმვა შეუძლია goroutine-ების ბალანსი მოახდინოს ადგილობრივ და გლობალურ რიგებს შორის.
ამ გზით, ახალი goroutine თავდაპირველად მოთავსდება დაგეგმვის ადგილობრივ რიგში, რაც საშუალებას აძლევს პროცესორის კეშის ეფექტიან გამოყენებას და ამცირებს კონტექსტის შეცვლის ხარჯებს.