Sobes.tech
Principal

Mi a goroutine a Go-ban? Miben különbözik egy goroutine egy operációs rendszer szálától?

sobes.tech MI

Válasz az MI-től

A goroutine-ok a Go-ban könnyű végrehajtási szálak, amelyeket a Go futásideje kezel, lehetővé téve funkciók párhuzamos futtatását.

A goroutine és az OS-szál közötti különbségek:

  • Könnyűség: a goroutine-ok sokkal kevesebb memóriát foglalnak (általában néhány kilobájt), míg az OS-szálak jelentősen nagyobbak.
  • Ütemezés: a goroutine-okat a Go ütemező tervezi a folyamaton belül, nem az OS, ez gyorsabb és hatékonyabb kontextusváltást tesz lehetővé.
  • Skálázhatóság: ezer vagy akár millió goroutine-t indíthatunk egyszerre, ami az OS-szálakkal nem lehetséges erőforrás-korlátok miatt.

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 befejeződjön
}