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