Sobes.tech
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.