Sobes.tech
Junior — Middle

Jaké přístupy a nástroje v Go se používají k organizaci paralelních a asynchronních výpočtů pomocí gorutin?

sobes.tech AI

Odpověď od AI

V jazyce Go se pro organizaci paralelních a asynchronních výpočtů používají gorutiny — lehké vlákna, která se spouštějí pomocí klíčového slova go.

Hlavní nástroje a přístupy:

  • Gorutiny: umožňují spouštět funkce paralelně bez přímé správy vláken operačního systému.
  • Kanály (channels): slouží k bezpečné výměně dat mezi gorutinami a ke synchronizaci.
  • select: operátor pro čekání na více operací na kanálech, umožňuje zpracování dat z více zdrojů.

Příklad:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan<- string) {
    time.Sleep(time.Second) // simulace práce
    ch <- fmt.Sprintf("Dělník %d hotovo", id)
}

func main() {
    ch := make(chan string)

    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }

    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

V tomto příkladu běží tři gorutiny paralelně a kanál se používá k přijímání výsledků.

Tedy kombinace gorutin a kanálů je hlavní způsob organizace paralelních a asynchronních výpočtů v Go.