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