Junior — Middle
Quais são as características distintivas do uso de canais com buffer na programação?
sobes.tech IA
Resposta da IA
Os canais com buffer em Go têm as seguintes características distintivas:
- Permitem enviar vários valores para o canal sem receber imediatamente, até que o buffer esteja cheio.
- O remetente bloqueia-se apenas quando o buffer está cheio, e o receptor quando o buffer está vazio.
- Melhoram o desempenho e permitem uma sincronização mais flexível das goroutines.
- São usados para implementar filas e buffers entre produtor e consumidor.
Exemplo:
ch := make(chan int, 3) // buffer de 3 elementos
ch <- 1
ch <- 2
ch <- 3
// O remetente não bloqueia até que o buffer esteja cheio
fmt.Println(<-ch) // 1