Usando un canal con búfer, ¿cómo se miden cuántos elementos hay en el canal? Por ejemplo, estoy creando y enviando un canal como este:
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
Quiero medir cuántos mensajes hay en el canal send_ch .
Soy consciente de que, debido a la simultaneidad, la medición no será exacta, ya que podría producirse un adelanto entre la medición y la acción (por ejemplo, lo que se analiza en este video Google I / O 2012 - Go Concurrency Patterns ). Usaré esto para el control de flujo entre productores y consumidores, es decir, una vez que haya pasado por una marca de agua alta, cambiaré algo de comportamiento hasta que vuelva a pasar por una marca de agua baja.
cap
lo haría.c := make(chan int)
) no se puede obtener su longitud. No he encontrado una razón para esto. Sí, su capacidad también regresa a 0