Sobes.tech
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.