Junior — Middle
V čem spočívá rozdíl mezi vykonáváním kódu v gorutině a prací systémového vlákna na úrovni operačního systému?
sobes.tech AI
Odpověď od AI
Gorutiny v Go jsou lehké vlákna řízená běhovým prostředím Go, nikoliv operačním systémem. Hlavní rozdíly:
- Lehkost: Gorutiny zabírají velmi málo paměti (obvykle několik kilobajtů zásobníku), zatímco systémová vlákna vyžadují mnohem více zdrojů.
- Plánování: Plánovač gorutin je integrován do běhového prostředí Go a rozděluje gorutiny mezi systémová vlákna, což umožňuje efektivní využití CPU.
- Vytváření a přepínání: Vytváření a přepínání mezi gorutinami je rychlejší než mezi systémovými vlákny, protože nevyžaduje přepínání kontextu jádra OS.
Příklad:
func main() {
go func() {
fmt.Println("Gorutina")
}()
fmt.Println("Hlavní vlákno")
time.Sleep(time.Second) // Čeká na dokončení gorutiny
}
Zde je gorutina spuštěna uvnitř procesu, ale přímo neodpovídá samostatnému systémovému vláknu.