Junior
O que em Go garante a segurança de threads (thread safety)?
sobes.tech IA
Resposta da IA
A segurança de concorrência em Go é garantida por vários mecanismos:
- Goroutines — threads leves que permitem executar código em paralelo.
- Canais — a principal ferramenta para trocar dados de forma segura entre goroutines sem usar variáveis partilhadas.
- Pacote sync — contém primitivas de sincronização, como
Mutexpara bloquear secções críticas,RWMutexpara dividir bloqueios em leitura e escrita, eWaitGrouppara aguardar a conclusão de um grupo de goroutines.
Exemplo de uso de um mutex para proteger um recurso comum:
import (
"sync"
)
var mu sync.Mutex
var contador int
func incrementar() {
mu.Lock()
defer mu.Unlock()
contador++
}
Desta forma, a segurança de concorrência em Go é alcançada através do uso correto de goroutines, canais e primitivas de sincronização do pacote sync.