Sobes.tech
Junior — Middle

Můžete vysvětlit koncept lehkých vláken a jejich rozdíl od běžných vláken?

sobes.tech AI

Odpověď od AI

Lehké vlákna (goroutines v Go) jsou abstrakcí pro paralelní provádění kódu, která je lehčí a efektivnější z hlediska zdrojů než běžné systémové vlákno.

Rozdíly:

  • Zdroje: goroutines zabírají mnohem méně paměti (obvykle několik kilobajtů), zatímco systémové vlákno vyžaduje mnohem více (obvykle megabajty).
  • Plánování: goroutines jsou plánovány plánovačem Go uvnitř procesu, nikoli operačním systémem, což umožňuje rychlý přepínání mezi nimi.
  • Vytváření: spuštění gorutiny je velmi rychlé a levné, lze jich vytvořit tisíce nebo i miliony současně.

Příklad vytvoření gorutiny:

func sayHello() {
    fmt.Println("Ahoj z gorutiny")
}

func main() {
    go sayHello() // spustí funkci v samostatné gorutině
    time.Sleep(time.Second) // čeká, aby gorutina měla čas se dokončit
}

Tímto způsobem umožňují lehké vlákna efektivně využívat paralelismus bez velkých nákladů.