Junior
Co jsou gorutiny?
sobes.tech AI
Odpověď od AI
Lehké vlákna, které spravuje prostředí běhu Go. Jsou vytvářeny klíčovým slovem go před voláním funkce.
Hlavní vlastnosti:
- Menší spotřeba paměti: Gorutina začíná s malou zásobou (obvykle 2 KB), která může být dynamicky zvětšena nebo zmenšena.
- Rychlejší vytvoření: Vytvoření gorutiny je mnohem rychlejší než vytvoření systémového vlákna.
- Multiplexování na systémová vlákna: Mnoho gorutin může být multiplexováno na menší počet systémových vláken plánovačem Go.
- Kooperativní plánování: Gorutiny nejsou předčasně přerušovány; dobrovolně předávají kontrolu plánovači (například při blokujících voláních nebo explicitních voláních
runtime.Gosched()).
Příklad vytvoření:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Ahoj z gorutiny!")
}
func main() {
go sayHello() // Spouští sayHello jako gorutinu
fmt.Println("Ahoj z hlavní funkce!")
time.Sleep(1 * time.Second) // Aby hlavní funkce neskončila dříve než gorutina
}
Porovnání s vlákny:
| Vlastnost | Gorutiny Go | Systémová vlákna |
|---|---|---|
| Řízení | Prostředí běhu Go | Operační systém |
| Spotřeba paměti | Nízká, dynamická zásobník | Vysoká, pevný zásobník |
| Vytváření | Rychlé | Pomalé |
| Plánování | Kooperativní | Předčasné |
| Synchronizace | Kanály, balíček sync | Mutexy, semafory OS |