【问题标题】:Clojure how to stop all go blocks or close all channels in core.asyncClojure 如何停止所有 go 块或关闭 core.async 中的所有通道
【发布时间】:2014-03-11 17:31:13
【问题描述】:

当我从 repl 中使用 core.async 时,我经常会因为我重新加载命名空间而失去了用于停止它的通道,所以 go 块会远离我。例如,如果我从 repl 运行它:

(go (when (not= c (second (async/alts! [c (async/timeout 1000)]))) 
      (println "hello")))

然后我重新加载命名空间并且 c 丢失了。现在我有“你好”向我的 REPL 发送垃圾邮件,直到时间结束。如果我可以关闭所有频道或杀死所有 go 块,它将节省我重新启动我的 REPL。

【问题讨论】:

    标签: clojure core.async


    【解决方案1】:

    据我所知,没有办法在全球范围内做到这一点。一种技术是使用可用于关闭任何环路的控制通道。 pub/sub 的东西可能适用于全局控制通道。

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2016-01-08
      • 2015-05-07
      • 2015-07-11
      • 1970-01-01
      • 2014-03-20
      相关资源
      最近更新 更多