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ť
}