Sobes.tech
Middle — Middle+

Ako možno kontrolovať vykonávanie programu a spravovať jeho stav počas behu?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa často používajú:

  • Gorutiny — ľahké vlákna, ktoré umožňujú paralelné vykonávanie funkcií.
  • Kanály — na synchronizáciu a výmenu dát medzi gorutinami.
  • Context (context.Context) — na správu životnosti operácií, zrušenie a prenos časových limitov.
  • Balíček sync — na správu konkurenčného prístupu ku zdrojom (Mutex, WaitGroup a pod.).

Príklad použitia kontextu na zrušenie operácie:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    // po 2 sekundách zrušíme kontext
    time.Sleep(2 * time.Second)
    cancel()
}()

select {
case <-time.After(5 * time.Second):
    fmt.Println("Operácia dokončená")
case <-ctx.Done():
    fmt.Println("Operácia zrušená")
}

Týmto spôsobom je riadenie stavu programu dosiahnuté koordináciou gorutín, použitím kontextu na zrušenie a synchronizáciu, ako aj prostredníctvom mechanizmov zámkov a signálov.