Junior
Čo sú gorutiny?
sobes.tech AI
Odpoveď od AI
Ľahké vlákna na vykonávanie, ktoré spravuje prostredie behu Go. Sú vytvorené kľúčovým slovom go pred volaním funkcie.
Hlavné vlastnosti:
- Menšia spotreba pamäte: Gorutina začína s malým zásobníkom (zvyčajne 2 KB), ktorý sa môže dynamicky zväčšovať alebo zmenšovať.
- Rýchlejšie vytvorenie: Vytvorenie gorutiny je oveľa rýchlejšie ako vytvorenie systémového vlákna.
- Multiplexovanie na systémové vlákna: Mnoho gorútin môže byť multiplexovaných na menší počet systémových vlákien plánovačom Go.
- Kooperatívne plánovanie: Gorutiny nie sú predčasne prerušované; dobrovoľne odovzdávajú kontrolu plánovaču (napríklad pri blokujúcich volaniach alebo explicitných volaniach
runtime.Gosched()).
Príklad vytvorenia:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Ahoj z gorutiny!")
}
func main() {
go sayHello() // Spúšťa sayHello ako gorutinu
fmt.Println("Ahoj z hlavnej funkcie!")
time.Sleep(1 * time.Second) // Aby hlavná funkcia neskončila skôr ako gorutina
}
Porovnanie s vláknami:
| Vlastnosť | Gorutiny Go | Vlákna OS |
|---|---|---|
| Riadenie | Prostredie behu Go | Operačný systém |
| Spotreba pamäte | Nízka, dynamická zásobník | Vysoká, pevná zásobník |
| Vytváranie | Rýchle | Pomalé |
| Plánovanie | Kooperatívne | Predbežné |
| Synchronizácia | Kanály, sync balíček | Mutexy, semafory OS |