Junior — Middle
Akú úlohu zohrávajú primitives synchronizácie v jazyku Go?
sobes.tech AI
Odpoveď od AI
Primitívy synchronizácie v jazyku Go sa používajú na riadenie prístupu ku zdieľaným zdrojom a na koordináciu vykonávania gorutín, aby sa predišlo súťažným podmienkam a zabezpečila správnosť programu.
Hlavné primitívy:
- Mutex (sync.Mutex) — zabezpečuje vzájomné vylúčenie, umožňujúc len jednej gorutíne súčasne vykonávať kritickú sekciu.
- WaitGroup (sync.WaitGroup) — umožňuje čakať na dokončenie skupiny gorutín.
- Kanál — kanál na prenos dát medzi gorutinami, ktorý je sám o sebe mocnou primitives synchronizácie.
- RWMutex (sync.RWMutex) — umožňuje viacerým gorutinám čítať dáta súčasne, ale zápis blokuje všetkých.
Príklad použitia Mutex:
var mu sync.Mutex
var čítač int
func inkrementuj() {
mu.Lock()
defer mu.Unlock()
čítač++
}
Takto primitives synchronizácie pomáhajú predchádzať konfliktom pri paralelnom prístupe k dátam a zabezpečujú správnu interakciu medzi gorutinami.