Sobes.tech
Junior — Middle

Kaip vyksta keturių gorutinų paskirstymas keturiems procesoriaus branduoliams jų paleidimo metu?

sobes.tech AI

Atsakymas iš AI

Go kalba, gorutinių planuotojas (Goroutine scheduler) paskirsto gorutines tarp sisteminių siūlų (M), kurie savo ruožtu yra susieti su procesoriaus branduoliais.

Jei turite 4 gorutines ir 4 procesoriaus branduolius, paleidus planuotoją, jis gali paskirstyti kiekvieną gorutines į atskirą branduolį, užtikrindamas paralelų vykdymą. Tai įmanoma, jei aplinkos kintamasis GOMAXPROCS nustatytas į 4 (moderniose Go versijose jis yra lygus prieinamų branduolių skaičiui).

Pavyzdys:

runtime.GOMAXPROCS(4) // nustato prieinamų siūlų skaičių į 4

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Gorutina %d pradėta\n", id)
        // darbas
    }(i)
}

Go planuotojas paskirstys gorutines tarp siūlų, kurie gali būti vykdomi skirtinguose branduoliuose, kas leidžia efektyviai naudoti daugialypius sistemų resursus. Tačiau tiksli paskirstymo tvarka priklauso nuo sistemos apkrovos ir vidinio planuotojo.