バッファリングされたチャネルを使用して、チャネル内の要素数をどのように測定しますか? たとえば、次のようなチャネルを作成して送信しています。
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
チャネル send_ch に含まれるメッセージの数を測定したい。
測定とアクションの間にプリエンプションが発生する可能性があるため、同時実行性のために測定が正確ではないことを認識しています (たとえば、このビデオGoogle I/O 2012 - Go Concurrency Patternsで説明されています)。プロデューサーとコンシューマーの間のフロー制御にこれを使用します。つまり、ハイ ウォーターマークを通過したら、ロー ウォーターマークを通過するまでいくつかの動作を変更します。