Sobes.tech
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.