Sobes.tech
Junior — Middle

Ako sú implementované a spravované goroutines v jazyku Go?

sobes.tech AI

Odpoveď od AI

Gorutiny v Go sú ľahké vlákna vykonávania, ktoré spravuje runtime Go, nie operačný systém. Umožňujú písanie konkurenčného kódu s minimálnymi zdrojmi.

Kľúčové aspekty implementácie a správy gorútín:

  • Vytvorenie: Gorutina sa spustí pomocou kľúčového slova go pred volaním funkcie.
  • Plánovač: Runtime Go má vlastného plánovača, ktorý rozdeľuje gorutiny medzi systémové vlákna (plánovanie M:N).
  • Zásobník: Každá gorutina má dynamický zásobník, ktorý môže rásť alebo sa zmenšovať podľa potreby, začínajúc s niekoľkými kilobajtmi.
  • Komunikácia: Na synchronizáciu a výmenu dát medzi gorutinami sa používajú kanály.

Príklad vytvorenia gorutiny:

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

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

Takto sú gorutiny efektívnym spôsobom paralelného vykonávania kódu s minimálnymi nákladmi.