Junior — Middle
Jakou roli hrají primitives synchronizace v jazyce Go?
sobes.tech AI
Odpověď od AI
Primitivy synchronizace v jazyce Go se používají k řízení přístupu ke sdíleným zdrojům a ke koordinaci provádění gorutin, aby se zabránilo závodním podmínkám a zajistila správnost programu.
Hlavní primitives:
- Mutex (sync.Mutex) — zajišťuje vzájemné vyloučení, umožňuje pouze jedné gorutině současně vykonávat kritickou sekci.
- WaitGroup (sync.WaitGroup) — umožňuje čekat na dokončení skupiny gorutin.
- Kanál — kanál pro přenos dat mezi gorutinami, který je sám o sobě mocnou primitives synchronizace.
- RWMutex (sync.RWMutex) — umožňuje více gorutinám číst data současně, ale zápis blokuje všechny.
Příklad použití Mutex:
var mu sync.Mutex
var čítač int
func inkrementuj() {
mu.Lock()
defer mu.Unlock()
čítač++
}
Tímto způsobem primitives synchronizace pomáhají předcházet konfliktům při paralelním přístupu k datům a zajišťují správnou interakci mezi gorutinami.