Sobes.tech
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