Sử dụng kênh được đệm, cách đo lường số lượng yếu tố trong kênh? Ví dụ, tôi tạo ra và gửi trên một kênh như thế này:Số yếu tố trong kênh
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
Tôi muốn đo lường bao nhiêu thông điệp đang trong kênh send_ch.
Tôi biết rằng do đồng thời đo lường sẽ không chính xác, vì có thể xảy ra sự chấp thuận trước giữa đo lường và hành động (ví dụ: được thảo luận trong video này Google I/O 2012 - Go Concurrency Patterns). Tôi sẽ sử dụng điều này để kiểm soát dòng chảy giữa các nhà sản xuất và người tiêu dùng tức là một khi tôi đã đi qua một watermark cao, thay đổi một số hành vi cho đến khi tôi vượt qua trở lại thông qua một watermark thấp.
Cảm ơn Artem. Đó là một việc sử dụng không mong đợi của len - tôi đã mong đợi nó sẽ trả về dung lượng của một kênh, chứ không phải số lượng các phần tử trong đó! Tốt để biết, cảm ơn một lần nữa. –
Nếu bạn muốn sử dụng công suất, thì chức năng tích hợp 'cap' sẽ thực hiện. – ANisus