Clojure如何在core.async中停止所有go块或关闭所有通道

Clojure如何在core.async中停止所有go块或关闭所有通道,clojure,core.async,Clojure,Core.async,当我使用repl中的core.async时,go块将远离我,因为我丢失了用于停止它的通道,因为我重新加载了名称空间。例如,如果我从repl运行此命令: (go (when (not= c (second (async/alts! [c (async/timeout 1000)]))) (println "hello"))) 然后我重新加载名称空间,c就丢失了。现在我有“你好”垃圾邮件我的回复,直到时间结束。如果我可以关闭所有通道或关闭所有go块,就可以省去重新启动REPL的麻烦。

当我使用repl中的core.async时,go块将远离我,因为我丢失了用于停止它的通道,因为我重新加载了名称空间。例如,如果我从repl运行此命令:

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

然后我重新加载名称空间,c就丢失了。现在我有“你好”垃圾邮件我的回复,直到时间结束。如果我可以关闭所有通道或关闭所有go块,就可以省去重新启动REPL的麻烦。

据我所知,在全球范围内无法做到这一点。一种技术是使用可用于关闭任何环路的控制通道。对于全球控制频道来说,这些东西可能很管用