Junior — Middle
Dörd goroutine-in dörd prosessor nüvəsinə paylanması necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, Goroutine planlayıcısı (Goroutine scheduler), goroutine'leri sistem ipleri (M) arasında paylayır və bunlar da prosessor nüvələrinə bağlıdır.
Əgər 4 goroutine və 4 prosessor nüvəniz varsa, planlayıcı işə salındıqda hər bir goroutine-i fərqli nüvəyə paylaya bilər, bu da paralel icra təmin edir. Bu, mühit dəyişəni GOMAXPROCS 4-ə təyin olunubsa (modern Go versiyalarında, mövcud nüvələrin sayına bərabərdir) mümkündür.
Nümunə:
runtime.GOMAXPROCS(4) // mövcud ip sayı 4-ə təyin edir
for i := 0; i < 4; i++ {
go func(id int) {
fmt.Printf("Goroutine %d başladı\n", id)
// iş
}(i)
}
Go planlayıcısı goroutine-ləri müxtəlif nüvələrdə işləyə bilən ip-lərə paylayacaq, bu da çoxprosessorlu sistemlərin səmərəli istifadəsini təmin edir. Ancaq, dəqiq paylama sistem yüklənməsinə və daxili planlayıcıya bağlıdır.