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 (
gooperá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
}