Sobes.tech
Senior

Čo je to gorutina? Ako je usporiadaná?

sobes.tech AI

Odpoveď od AI

Gorutina je ľahký vlákno na vykonávanie v jazyku Go. Na rozdiel od systémových vlákien, gorutiny sú spravované runtime-om jazyka Go a majú veľmi malý zásobník (začínajú s niekoľkými kilobajtmi a môžu sa dynamicky zväčšovať). To umožňuje spustiť stovky tisíc gorútin súčasne s nízkymi nákladmi na režiu.

Štruktúra gorutiny:

  • Pri vytváraní gorutiny (pomocou operátora go) plánovač jazyka Go ju umiestni do fronty pripravených úloh.
  • Runtime jazyka Go používa plánovanie M:N: M systémových vlákien (OS vlákna) obsluhuje N gorútin.
  • Gorutiny prepínajú kontext na úrovni runtime, čo je rýchlejšie než prepínanie medzi systémovými vláknami.
  • Každé vlákno (M) môže vykonávať viac gorútin (N), prepínajúc medzi nimi pri blokovaniach alebo podľa potreby.

Príklad vytvorenia gorutiny:

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

func main() {
    go sayHello() // spustíme gorutinu
    time.Sleep(time.Second) // čakáme, aby gorutina mala čas sa vykonať
}