Sobes.tech
Senior

Mi az a goroutine? Hogyan van felépítve?

sobes.tech MI

Válasz az MI-től

A goroutine egy könnyű végrehajtási szál a Go nyelvben. A rendszer szálaitól eltérően, a goroutine-okat a Go futásideje kezeli, és nagyon kicsi veremmel rendelkeznek (néhány kilobájttal kezdődik, és dinamikusan növekedhet). Ez lehetővé teszi, hogy több százezer goroutine-t futtassunk egyszerre alacsony overhead mellett.

A goroutine felépítése:

  • Goroutine létrehozásakor (go operátorral) a Go ütemezője beilleszti azt a kész feladatok sorába.
  • A Go futásideje M:N ütemezést használ: M rendszer szál (OS szálak) kezelik N goroutine-t.
  • A goroutine-ok a futásidejű szinten váltanak kontextust, ami gyorsabb, mint a rendszer szálak közötti váltás.
  • Minden szál (M) több goroutine-t (N) is futtathat, váltogatva közöttük blokkolások vagy szükség szerint.

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) // várunk, hogy a goroutine lefusson
}