Sobes.tech
Principal

Co jsou gorutiny v Go? V čem se liší goroutine od vlákna operačního systému?

sobes.tech AI

Odpověď od AI

Gorutiny v Go jsou lehké běhové vlákna řízená běhovým prostředím Go, která umožňují spouštět funkce paralelně.

Rozdíly mezi goroutinou a vláknem OS:

  • Lehkost: gorutiny zabírají mnohem méně paměti (obvykle několik kilobajtů), zatímco vlákna OS jsou výrazně větší.
  • Plánování: gorutiny jsou plánovány plánovačem Go uvnitř procesu, nikoli OS, což umožňuje rychlejší a efektivnější přepínání kontextu.
  • Škálovatelnost: lze spustit tisíce nebo dokonce miliony gorutin současně, což není možné s vlákny OS kvůli omezením zdrojů.

Příklad vytvoření gorutiny:

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

func main() {
    go sayHello() // spouštíme gorutinu
    time.Sleep(time.Second) // čekáme, aby gorutina měla čas se dokončit
}