Usando um canal com buffer, como medir quantos elementos existem no canal? Por exemplo, estou criando e enviando um canal como este:
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
Quero medir quantas msgs estão no canal send_ch .
Estou ciente de que, devido à simultaneidade, a medição não será exata, pois pode ocorrer preempção entre a medição e a ação (por exemplo, discutido neste vídeo Google I / O 2012 - Go Concurrency Patterns ). Usarei isso para controle de fluxo entre produtores e consumidores, ou seja, uma vez que passei por uma marca d'água alta, mudando algum comportamento até passar de volta por uma marca d'água baixa.
cap
faria isso.c := make(chan int)
) você não poderá obter seu comprimento. Eu não encontrei um motivo para isso. Sim, a capacidade também retorna como 0