Sobes.tech
Senior

როდის შეიქმნება გორუტინები, ისინი გო-ის დაგეგმვის ადგილობრივ ან გლობალურ რიგში მიდიან?

sobes.tech AI

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

Go-ში goroutine-ის შექმნისას, ის მოთავსებულია ადგილობრივ შესრულების რიგში (local run queue), რომელიც მიეკუთვნება კონკრეტულ M-ს (მოწყობილობა, სისტემური ნაკადი).

Go-ის გარემო იყენებს M:N მოდელს, სადაც M არის სისტემური ნაკადები, G კი goroutine-ები. თითოეულ M-ს აქვს თავისი ადგილობრივი goroutine-ის რიგი შესრულებისთვის. თუ ადგილობრივი რიგი გადატვირთულია ან ცარიელია, დაგეგმვა შეუძლია goroutine-ების ბალანსი მოახდინოს ადგილობრივ და გლობალურ რიგებს შორის.

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