Junior — Middle
V čom spočíva rozdiel medzi vykonávaním kódu v gorutine a prácou systémového vlákna na úrovni operačného systému?
sobes.tech AI
Odpoveď od AI
Gorutiny v Go sú ľahké vlákna spravované runtimeom Go, nie operačným systémom. Hlavné rozdiely:
- Ľahkosť: Gorutiny zaberajú veľmi málo pamäte (zvyčajne niekoľko kilobajtov zásobníka), zatiaľ čo systémové vlákna vyžadujú oveľa viac zdrojov.
- Plánovanie: Plánovač gorutín je integrovaný do runtimeu Go a rozdeľuje gorutiny medzi systémové vlákna, čo umožňuje efektívne využitie CPU.
- Vytváranie a prepínanie: Vytváranie a prepínanie medzi gorutinami je rýchlejšie než medzi systémovými vláknami, pretože nevyžaduje prepínanie kontextu jadra OS.
Príklad:
func main() {
go func() {
fmt.Println("Gorutina")
}()
fmt.Println("Hlavný vlákno")
time.Sleep(time.Second) // Čaká na dokončenie gorutiny
}
Tu sa gorutina spúšťa v rámci procesu, ale neodpovedá priamo samostatnému systémovému vláknu.