Sobes.tech
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.