47
使用緩衝通道,如何測量通道中有多少元素?例如,我創建像這樣發送的頻道:通道中元素的數量
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
我想衡量多少封郵件都在通道send_ch。
我知道,由於併發性,測量並不準確,因爲測量和動作之間可能會發生搶佔(例如在本視頻Google I/O 2012 - Go Concurrency Patterns中討論過)。我將使用它來在生產者和消費者之間進行流量控制,也就是說,一旦我通過了高水印,就改變了一些行爲,直到我通過低水位傳回。
謝謝阿爾喬姆。這是len的一種不可預料的用途 - 我會期望它返回一個頻道的容量,而不是其中的元素數量!很高興知道,再次感謝。 –
如果你想要容量,那麼內置函數'cap'就可以做到。 – ANisus