Junior — Middle
Aký je rozdiel medzi gorutinou a systémovým vláknom v kontexte vykonávania úloh?
sobes.tech AI
Odpoveď od AI
Gorutina je ľahká jednotka vykonávania spravovaná prostredím na beh Go (runtime), ktorá používa veľmi málo pamäte a môže byť spustená vo veľkom počte súčasne. Systémový vlákno (thread) je ťažšia jednotka plánovania operačného systému.
Hlavné rozdiely:
- Gorutiny sú oveľa ľahšie z hľadiska zdrojov ako systémové vlákna.
- Plánovanie gorutín prebieha vnútri runtime Go, nie operačného systému.
- Tisíce gorutín môžu pracovať súčasne, zatiaľ čo počet systémových vlákien je zvyčajne menší kvôli nákladom na vytvorenie a prepínanie.
Príklad vytvorenia gorutiny:
func úloha() {
fmt.Println("Vykonávanie úlohy")
}
func main() {
go úloha() // spustenie gorutiny
time.Sleep(time.Second) // čakáme, aby gorutina mala čas sa dokončiť
}
Týmto spôsobom gorutiny umožňujú efektívne vykonávať mnoho úloh paralelne s menšími nákladmi.