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.