Sobes.tech
Junior — Middle

Da li sve goroutine-е treba da se pokrenu istovremeno i paralelno po default-u?

sobes.tech АИ

Одговор од АИ

Ne, sve goroutine-ove nisu obavezne da se pokrenu istovremeno i paralelno po defaultu. Goroutine-ovi su lagani niti koje planira scheduler Go.

Kada pokrenete više goroutine-ova, oni mogu da se izvršavaju sekvencijalno ili paralelno, u zavisnosti od dostupnog broja sistemskih niti (GOMAXPROCS) i trenutnog opterećenja.

Po defaultu, ako je GOMAXPROCS jednak 1, goroutine-ovi će se izvršavati konkurentno, ali ne i paralelno — to jest, prebacivanje između njih dešava se na nivou scheduler-a, ali samo jedna se izvršava u isto vreme.

Da biste postigli pravi paralelizam, potrebno je povećati GOMAXPROCS (obično jednako broju jezgara procesora). Tada više goroutine-ova može da se izvršava istovremeno na različitim jezgrima.