Sobes.tech
Junior — Middle

Ako odlíšiť gorutínu od bežného vlákna v operačnom systéme?

sobes.tech AI

Odpoveď od AI

Goroutine je ľahký vlákno na vykonávanie, ktoré spravuje runtime Go, nie operačný systém. Hlavné rozdiely:

  • Ľahkosť: Goroutine zaberajú oveľa menej pamäte (zvyčajne niekoľko kilobajtov zásobníka), zatiaľ čo systémové vlákna vyžadujú megabajty.
  • Plánovanie: Goroutine sú plánované runtime-om Go (plánovač M:N), nie OS. To umožňuje spustiť tisíce goroutine na viacerých systémových vláknach.
  • Vytváranie: Vytvorenie goroutine je veľmi lacné — stačí napísať go funkcia(), zatiaľ čo vytvorenie systémového vlákna je náročnejšie na zdroje.

Príklad vytvorenia goroutine:

func sayHello() {
    fmt.Println("Ahoj z goroutine")
}

func main() {
    go sayHello() // spustí goroutine
    time.Sleep(time.Second) // čakáme, aby goroutine mohla dokončiť
}

Goroutine sú teda abstrakciou nad systémovými vláknami, optimalizovanou pre konkurenčné programovanie v Go.