Middle+
Kako su strukturirane goroutine i koliko memorije zauzimaju u steku?
sobes.tech АИ
Одговор од АИ
Goroutine je lagani tok izvršavanja koji upravlja okruženje za izvršavanje Go (runtime). One se multipleksuju na manjem broju sistemskih niti (pool niti).
Glavne komponente:
- Stek: Svaka gorutina ima poseban, proširiv stek. U početku je mali (16KB sa Go 1.4+, ranije 8KB), može se povećavati ili smanjivati po potrebi.
- Planer Go: Implementira model M:N (M gorutina na N sistemskih niti). Odgovoran je za prebacivanje između gorutina na dostupnim sistemskim nitima. Prebacivanje se dešava pri blokirajućim operacijama (ulaz/izlaz, čekanje na kanal) ili eksplicitnim pozivom
runtime.Gosched(). - Kontekst: Sadrži pokazivač na mašinski kod za izvršenje, pokazivač na stek i druge metapodatke potrebne planer.
Početna veličina steka gorutine od Go 1.4 je 16KB. Ova veličina nije fiksna i može se dinamički menjati.