Sobes.tech
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.