Як за допомогою буферизованого каналу виміряти, скільки елементів у каналі? Наприклад, я створюю та надсилаю на такий канал:
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
Я хочу виміряти, скільки повідомлень у каналі send_ch .
Я усвідомлюю, що через паралельність вимірювання не буде точним, оскільки може виникнути попередження між вимірюванням та дією (наприклад, обговорено у цьому відео Google I / O 2012 - Go Concurrency Patterns ). Я буду використовувати це для контролю потоку між виробниками та споживачами, тобто коли я пройду через високий водяний знак, змінюючи деяку поведінку, поки не пройду назад через низький водяний знак.