Sobes.tech
Junior — Middle

Kako se tokom pokretanja raspoređuju četiri goroutine na četiri procesorska jezgra?

sobes.tech АИ

Одговор од АИ

U Go, planera za goroutine (Goroutine scheduler) raspoređuje goroutine-ove preko sistemskih niti (M), koje su zauzvrat povezane sa CPU jezgrima.

Ako imate 4 goroutine i 4 CPU jezgra, prilikom pokretanja planera, on može rasporediti svaku goroutine na zasebno jezgro, obezbeđujući paralelno izvršavanje. Ovo je moguće ako je promenljiva okruženja GOMAXPROCS postavljena na 4 (u modernim verzijama Go, ona je jednaka broju dostupnih jezgara).

Primer:

runtime.GOMAXPROCS(4) // postavlja broj dostupnih niti na 4

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Goroutine %d pokrenuta\n", id)
        // rad
    }(i)
}

Planer Go će rasporediti goroutine-ove na niti koje mogu da se izvršavaju na različitim jezgrima, što omogućava efikasno korišćenje višejedrnih sistema. Međutim, tačno raspoređivanje zavisi od opterećenja sistema i unutrašnjeg planera.