Wie können Sie mit einem gepufferten Kanal messen, wie viele Elemente sich im Kanal befinden? Zum Beispiel, ich bin zu schaffen und auf einem Kanal wie folgt gesendet:Anzahl der Elemente in einem Kanal
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
ich messen will, wie viele msgs im Kanal send_ch sind.
Ich bin mir bewusst, dass die Messung aufgrund der Parallelität nicht genau sein wird, da eine Vorbelegung zwischen Messung und Aktion auftreten könnte (zB in diesem Video beschrieben Google I/O 2012 - Go Concurrency Patterns). Ich werde das für die Flusskontrolle zwischen Produzenten und Konsumenten verwenden, dh sobald ich ein High Watermark passiert habe, etwas Verhalten ändern, bis ich durch ein niedriges Wasserzeichen zurückgehe.
Dank Artem. Das ist ein unerwarteter Einsatz von len - ich hätte erwartet, dass es die Kapazität eines Kanals zurückgibt, nicht die Anzahl der Elemente darin! Gut zu wissen, nochmals vielen Dank. –
Wenn Sie die Kapazität haben wollten, dann würde die eingebaute Funktion 'cap' es tun. – ANisus