Junior — Middle
Aké techniky používania zámkov alebo iných mechanizmov na zabránenie súčasného prístupu k údajom poznáš?
sobes.tech AI
Odpoveď od AI
Hlavné techniky na prevenciu súbežného prístupu k údajom v Go:
- Mutex (sync.Mutex): zámok kritickej sekcie, aby s údajmi mohol pracovať iba jeden vlákno.
var mu sync.Mutex
mu.Lock()
// práca s spoločnými údajmi
mu.Unlock()
-
RWMutex (sync.RWMutex): umožňuje viacerým čitateľom čítať údaje súčasne, ale blokuje zápis.
-
Kanály (channels): prenos údajov medzi gorutinami, čím sa zabráni priamej prístupu ku spoločným údajom.
-
Atomické operácie (sync/atomic): pre jednoduché operácie s premennými bez úplného zámku.
-
sync.Once: pre jednorazovú inicializáciu údajov.
Výber mechanizmu závisí od úlohy: pre jednoduché vzájomné vylúčenie — Mutex, pre oddelenie čítania a zápisu — RWMutex, pre prenos správ — kanály.