Junior — Middle
Welke technieken voor het gebruik van blokkades of andere mechanismen om gelijktijdige toegang tot gegevens te voorkomen, ken je?
sobes.tech AI
Antwoord van AI
Belangrijkste technieken om gelijktijdige toegang tot gegevens in Go te voorkomen:
- Mutex (sync.Mutex): blokkeer de kritieke sectie zodat slechts één thread met de gegevens kan werken.
var mu sync.Mutex
mu.Lock()
// werken met gedeelde gegevens
mu.Unlock()
-
RWMutex (sync.RWMutex): staat meerdere lezers toe om gelijktijdig te lezen, maar blokkeert schrijven.
-
Kanalen (channels): gegevensoverdracht tussen goroutines, waardoor directe toegang tot gedeelde gegevens wordt vermeden.
-
Atomische operaties (sync/atomic): voor eenvoudige operaties op variabelen zonder volledige blokkering.
-
sync.Once: voor eenmalige initialisatie van gegevens.
De keuze van het mechanisme hangt af van de taak: voor eenvoudige onderlinge uitsluiting — Mutex, voor scheiding van lezen en schrijven — RWMutex, voor berichtoverdracht — kanalen.