当前补丁文件:0002-ASYNC-126-Add-public-channel-closed-predicate.patch
在 clojure.core.async 中添加一个公共函数 {{closed?}},以确定通道是否已关闭,而无需放入或取出任何值。
这是一个围绕 {{clojure.core.async.impl.protocols/closed?}} 的简单包装。
在 {{closed?}} 和 {{close!}} 之间仍然存在竞争条件。正确的代码不应该依赖于 {{closed?}} 来检查通道是否 *打开*。{{closed?}} 判断条件应该仅用于避免为已关闭的通道产生额外的工作。
## 示例用例
生产者进程可以在进行产生下一个值的作业之前检查通道是否 {{closed?}}。
(thread
(loop []
(when-not (closed? ch)
(>!! ch (do-expensive-work))
(recur))))