Sobes.tech
Junior — Middle

Que técnicas de utilização de bloqueios ou outros mecanismos para evitar o acesso simultâneo aos dados conheces?

sobes.tech IA

Resposta da IA

Técnicas principais para evitar acesso simultâneo a dados em Go:

  • Mutex (sync.Mutex): bloqueio da secção crítica para que apenas um thread possa trabalhar com os dados.
var mu sync.Mutex
mu.Lock()
// trabalho com dados partilhados
mu.Unlock()
  • RWMutex (sync.RWMutex): permite que múltiplos leitores leiam dados simultaneamente, mas bloqueia a escrita.

  • Canais (channels): transmissão de dados entre goroutines, evitando acesso direto aos dados partilhados.

  • Operações atómicas (sync/atomic): para operações simples com variáveis sem bloqueio completo.

  • sync.Once: para inicialização única de dados.

A escolha do mecanismo depende da tarefa: para exclusão mútua simples — Mutex, para separar leitura e escrita — RWMutex, para transmissão de mensagens — canais.