Junior — Middle
Quais métodos são utilizados para garantir a consistência dos dados ao trabalhar com múltiplas threads ou goroutines?
sobes.tech IA
Resposta da IA
Para garantir a coerência dos dados ao trabalhar com múltiplos threads ou goroutines em Go, utilizam-se os seguintes métodos:
-
Mutexes (sync.Mutex) — bloqueiam o acesso aos dados partilhados, permitindo que apenas um thread ou goroutine modifique os dados de cada vez.
-
Canais (channels) — permitem transmitir dados de forma segura entre goroutines, garantindo sincronização e troca de mensagens.
-
Pacote sync/atomic — fornece operações atômicas para trabalhar com tipos de dados primitivos sem bloqueios.
Exemplo de uso de um mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Uso de canais para transmissão de dados:
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
A escolha do método depende da tarefa específica e dos requisitos de desempenho e conveniência.