Middle+
Ako sú gorutiny usporiadané a koľko pamäte zaberajú na zásobníku?
sobes.tech AI
Odpoveď od AI
Goroutine je lahek tok izvajanja, ki ga upravlja okolje za izvajanje Go (runtime). Multiplexira se na manjše število sistemskih niti (pool niti).
Glavne komponente:
- Zaloga: Vsaka goroutine ima ločeno, razširljivo zanko. Sprva je majhna (16KB z Go 1.4+, prej 8KB), lahko se povečuje ali zmanjšuje glede na potrebe.
- Načrtovalec Go: Implementira model M:N (M goroutin na N sistemskih niti). Odgovoren je za preklapljanje med goroutinami na razpoložljivih sistemskih nitih. Preklapljanje se zgodi pri blokirajočih operacijah (vhod/izhod, čakanje na kanal) ali z eksplicitnim klicem
runtime.Gosched(). - Kontekst: Vsebuje kazalec na strojno kodo za izvajanje, kazalec na zanko in druge metapodatke, potrebne načrtovalcu.
Začetna velikost zanke goroutine od Go 1.4 je 16KB. Ta velikost ni fiksna in se lahko dinamično spreminja.