Junior
Jaké další způsoby synchronizace gorutin v Go kromě kanálů existují?
sobes.tech AI
Odpověď od AI
Kromě kanálů lze v Go pro synchronizaci gorutin použít:
- sync.WaitGroup — umožňuje čekat na dokončení skupiny gorutin.
- sync.Mutex — mutex na ochranu sdílených zdrojů před současným přístupem.
- sync.RWMutex — mutex s rozdělením na čtení a zápis.
- sync.Cond — podmíněná proměnná pro upozornění gorutin na událost.
- atomické operace z balíčku
sync/atomic— pro atomické operace s proměnnými bez zámků.
Příklad použití WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// práce gorutiny
}()
wg.Wait() // čekáme na dokončení všech gorutin