Junior — Middle
Como garantir uma escrita segura de dados num canal a partir de várias goroutines sem usar bloqueio?
sobes.tech IA
Resposta da IA
Em Go, para escrever dados de forma segura em um canal a partir de várias goroutines sem usar bloqueios, geralmente basta usar o próprio canal, pois os canais em Go são seguros para concorrência por padrão.
Exemplo:
ch := make(chan int)
// Escrita no canal de várias goroutines
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // escrita segura
}(i)
}
// Leitura do canal
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Se precisar garantir que a escrita não bloqueie, pode usar um canal com buffer. Assim, bloqueios manuais não são necessários, pois o canal fornece sincronização.