Buffering

Por padrão, os canais são sem buffer, o que indica que eles só aceitarão envios (chan <-) se houver um recebimento (<- chan) correspondente que esteja pronto para receber o valor enviado.

Os canais com buffer permitem aceitar um número limitado de valores sem um receptor correspondente para esses valores.

É possível criar um canal com um buffer. Os canais com buffer são bloqueados apenas quando o buffer está cheio. Da mesma forma, os recebimentos de um canal com buffer são bloqueados apenas quando o buffer estiver vazio.

Canais com buffer podem ser criados passando um parâmetro de capacidade adicional para a função make() que especifica o tamanho do buffer.


ch := make(chan type, capacity)
                        
channel_buffering.go