Junior — Middle
Jaké techniky používání zámků nebo jiných mechanismů k zabránění současnému přístupu k datům znáš?
sobes.tech AI
Odpověď od AI
Hlavní techniky pro prevenci souběžného přístupu k datům v Go:
- Mutex (sync.Mutex): zámek kritické sekce, aby s daty mohl pracovat pouze jeden vlákno.
var mu sync.Mutex
mu.Lock()
// práce s sdílenými daty
mu.Unlock()
-
RWMutex (sync.RWMutex): umožňuje více čtenářům číst data současně, ale blokuje zápis.
-
Kanály (channels): přenos dat mezi gorutinami, čímž se zabrání přímému přístupu ke sdíleným datům.
-
Atomické operace (sync/atomic): pro jednoduché operace s proměnnými bez úplného zámku.
-
sync.Once: pro jednorázovou inicializaci dat.
Volba mechanismu závisí na úkolu: pro jednoduché vzájemné vyloučení — Mutex, pro oddělení čtení a zápisu — RWMutex, pro přenos zpráv — kanály.