Junior — Middle
Este array garante segurança ao ser utilizado em um ambiente multithread?
sobes.tech IA
Resposta da IA
Em Go, os slices comuns (arrays de tamanho dinâmico) não são seguros para concorrência por padrão. Se várias goroutines lerem e escreverem no mesmo slice sem sincronização, isso levará a condições de corrida e comportamento imprevisível.
Para garantir a segurança em ambientes multithread, deve-se usar:
- Mutexes (
sync.Mutex) para bloquear o acesso durante a modificação do slice. - Canais (
chan) para transmissão de dados entre goroutines. - Estruturas de dados especializadas do pacote
syncou de bibliotecas externas.
Exemplo com mutex:
var mu sync.Mutex
var slice []int
func appendSafe(val int) {
mu.Lock()
defer mu.Unlock()
slice = append(slice, val)
}
Sem essas medidas, o array não é seguro para uso paralelo.