Junior — Middle
Jaké typy mechanismů blokování vzájemného vyloučení používáte ve svých projektech?
sobes.tech AI
Odpověď od AI
V jazyce Go pro implementaci vzájemného vyloučení nejčastěji používám standardní typ sync.Mutex. Je jednoduchý na použití a efektivně blokuje kritické sekce kódu.
Také používám sync.RWMutex, když je potřeba rozlišit přístup ke čtení a zápisu: několik gorutin může číst data současně, ale zápis blokuje všechny.
V některých případech používám kanály (channels) pro synchronizaci, což umožňuje vyhnout se explicitním zámkům a učinit kód deklarativnější.
Příklad s sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Volba mechanismu závisí na konkrétním úkolu a požadavcích na výkon.