使用缓冲通道,如何测量通道中有多少元素?例如,我正在创建并发送一个频道,如下所示:
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
我想测量一下send_ch频道有多少个msgs.
我知道由于并发性,测量不会准确,因为在测量和操作之间可能会发生抢占(例如在这个视频Google I/O 2012 - Go Concurrency Patterns中讨论的).我将用它来控制生产者和消费者之间的流量(一旦我通过了高水位线,改变了一些行为,直到我通过低水位线为止).