Šta je gorutina? Čime se razlikuje od sistemskog niti? Pričaj o planeru Go (GMP).
sobes.tech АИ
Одговор од АИ
Goroutine je lagani tok izvršavanja u jeziku Go, kojim upravlja Go runtime, a ne operativni sistem. Za razliku od sistemskog niti, goroutine-ovi imaju znatno manju veličinu steka (počinju sa nekoliko kilobajta i mogu se dinamički povećavati), što omogućava pokretanje hiljada ili čak miliona goroutine-ova istovremeno sa niskim troškovima.
Sistemske niti se kreiraju i planiraju od strane operativnog sistema, imaju fiksan veliki stek i operacije prebacivanja konteksta su skuplje.
Planer Go se zasniva na GMP modelu:
- G (goroutine) — sama goroutine, jedinica izvršavanja.
- M (mašina) — sistemska nit (OS thread), na kojoj se izvršavaju goroutine-ovi.
- P (procesor) — logički procesor, resurs koji je potreban za izvršavanje goroutine na M.
P upravlja redom spremnih goroutine-ova (G). M može izvršiti samo jednu goroutine odjednom, ali zahvaljujući prisustvu više M i P, planer efikasno raspoređuje goroutine-ove između sistemskih niti, obezbeđujući konkurentnost i paralelizam.
Ovaj pristup omogućava Go da efikasno koristi sistemske resurse i da skalira na višestrukim procesorima.