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.