查询缓冲核心中的元素数。async/chan

Querying the number of elements in a buffered core.async/chan

有缓冲 chan,说

(def c (clojure.core.async/chan 100))

是否可以查询chan中当前有多少个元素?

实例化通道来自 ManyToManyChannel 类型,您可以使用 buf 属性.

访问通道的内部缓冲区
(.buf c)
 => #<FixedBuffer clojure.core.async.impl.buffers.FixedBuffer@3d67452c>

那个缓冲区实现了 clojure.lang.Counted 所以它是可数的。

(count (.buf c))
=> 0