Wie messen Sie mithilfe eines gepufferten Kanals, wie viele Elemente sich im Kanal befinden? Zum Beispiel erstelle und sende ich auf einem Kanal wie diesem:
send_ch := make(chan []byte, 100)
// code
send_ch <- msg
Ich möchte messen, wie viele Nachrichten sich im Kanal send_ch befinden .
Ich bin mir bewusst, dass die Messung aufgrund der Parallelität nicht genau ist, da zwischen Messung und Aktion eine Prävention auftreten kann (z. B. in diesem Video beschrieben Google I / O 2012 - Go Concurrency Patterns ). Ich werde dies für die Flusskontrolle zwischen Produzenten und Verbrauchern verwenden, dh sobald ich ein hohes Wasserzeichen passiert habe, und ein Verhalten ändern, bis ich durch ein niedriges Wasserzeichen zurückkehre.
cap
dies tun.c := make(chan int)
) erstellt wird, man seine Länge nicht bekommen kann. Ich habe keinen Grund dafür gefunden. Ja, die Kapazität kehrt ebenfalls als 0 zurück