2024年Clojure调查中分享您的想法!

欢迎!有关如何操作的更多信息,请参阅关于页面。

0
core.async

我们想要在消费者走开场景中这样做,还是想要将其整合到通道实现中?

`
(defn drain!
"完全消耗并丢弃一个通道。返回一个
当ch完全被消耗时关闭的通道"
[ch]
(go-loop []
(if (some? (<! ch))

 (recur))))

`

2 个答案

0
by

评论由samumbach发表

当一个通道的缓冲区已满时,对同一个多通道上的通道执行 close!和/或{{untap}}是不够的,以解除其他通道的阻塞。当需要drain!时,这是一个特定情况;在untap/close之后确保drain,以避免竞争条件。

0
by
参考:https://clojure.atlassian.net/browse/ASYNC-66(由gshayban报告)
...