Mi a goroutine, és hogyan van felépítve belülről?
sobes.tech MI
Válasz az MI-től
A goroutine-ok könnyű végrehajtási szálak Go-ban, amelyeket a nyelv futásideje kezel, nem pedig az operációs rendszer. A rendszer szálaktól eltérően a goroutine-ok nagyon kicsi veremmel rendelkeznek (néhány kilobájttal kezdődnek), és dinamikusan bővíthetők.
Egy goroutine belsejében a g struktúrával van ábrázolva, amely tartalmazza az állapotot, a veremot, a regisztereket és más információkat. A Go ütemezője (scheduler) kezeli a goroutine-ok közötti váltást egy M:N modell segítségével, ahol M a rendszer szálak (OS szálak), N pedig a goroutine-ok.
Az ütemező elosztja a goroutine-okat a rendszer szálak között, lehetővé téve a hatékony többprocesszoros használatot anélkül, hogy extra költségek merülnének fel az OS szálak létrehozásában és váltásában. Ez a runtime-ben történő kooperatív és preemptív multitasking révén valósul meg.
Goroutine létrehozásának példája:
func sayHello() {
fmt.Println("Helló a goroutine-ból")
}
func main() {
go sayHello() // goroutine indítása
time.Sleep(time.Second) // időt adunk a goroutine-nak a végrehajtáshoz
}