Junior — Middle
Qual é a sua experiência no uso de canais não bufferizados para interação entre processos?
sobes.tech IA
Resposta da IA
Os canais não bufferizados em Go são canais que não têm um buffer interno, ou seja, o envio para tal canal bloqueia até que outra goroutine leia o valor, e vice-versa.
A experiência de usar esses canais geralmente está relacionada à sincronização entre goroutines, quando é importante que os dados sejam transmitidos e processados estritamente por ordem e sem atrasos.
Exemplo de uso:
ch := make(chan int) // canal não bufferizado
go func() {
ch <- 42 // envio bloqueia até alguém ler
}()
val := <-ch // leitura, desbloqueia o envio
fmt.Println(val) // 42
Essa abordagem é útil para implementar padrões produtor-consumidor, quando é necessário garantir que os dados não sejam perdidos e que o processamento ocorra de forma síncrona.