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