当前补丁文件: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))))