Kako se vrši raspodela gorutina po nitima izvršenja?
sobes.tech АИ
Одговор од АИ
U Go-u, raspodela gorutina na niti za izvršavanje (OS niti) vrši se pomoću planera ugrađenog u runtime. Gorutina je lagana korutina koja ne odgovara direktno jednom OS niti.
Planer Go koristi model M:N, gde je M broj OS niti, a N broj gorutina. Dinamički dodeljuje gorutine nitima kako bi efikasno koristio dostupne sistemske resurse.
Glavne komponente:
- G (gorutina) — sama gorutina.
- M (mašina) — OS nit.
- P (procesor) — logički procesor koji upravlja izvršavanjem gorutina.
Proces:
- P se dodeljuje gorutini.
- P se povezuje sa M (OS nitom).
- M izvršava gorutinu.
Ako gorutina blokira (npr. u sistemskom pozivu), planer može prebaciti izvršavanje na drugu gorutinu u drugoj niti, da bi se izbegla neaktivnost.
Na ovaj način, raspodela gorutina po nitima se vrši automatski i transparentno za programera, obezbeđujući visoku konkurentnost i skalabilnost.
Primer kreiranja gorutine:
go func() {
fmt.Println("Zdravo iz gorutine")
}()
Ovde će planer odlučiti na kojoj OS niti će se izvršiti ova gorutina.