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.