查询缓冲核心中的元素数.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

最新更新