Junior — Middle
Jaké úkoly řeší balíček sync v jazyce Go?
sobes.tech AI
Odpověď od AI
Balíček sync v jazyce Go poskytuje primitives synchronizace pro správu souběžného přístupu ke zdrojům a koordinaci gorutin.
Hlavní úkoly, které balíček sync řeší:
- Mutex (
Mutex) — pro ochranu kritických sekcí a zabránění současného přístupu ke sdíleným datům. - RWMutex — mutex s oddělením čtení a zápisu, který umožňuje více gorutinám číst data současně, ale blokuje zápis.
- WaitGroup — pro čekání na dokončení skupiny gorutin.
- Once — pro provedení inicializace pouze jednou.
Příklad použití Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Tímto způsobem balíček sync pomáhá bezpečně pracovat s konkurencí a vyhýbat se závodním podmínkám.