1
我写了一个独立的uberjar与旋转对开去块像这样一个主要方法:阻止程序终止,而无限期执行块吗?
(defn -main [& args]
(let [c (chan)]
(go (while true
(>! c (rand))))
(go (while true
(<! c)))))
但是,当我执行程序很快终止。为什么?我的意图是让go块无限期地执行。我结束了坚持
(<!! (chan))
在主要功能的结束,以防止终止。有没有更好的方法来做到这一点?
所以没有办法干净地退出你的应用程序? – Shepmaster
我依靠Ctrl + C。 – AustinC
@AustinC:这正是你的问题。在设计具有无限调度循环的异步数据流时,您需要自己的取消条件。在'core.async'中,取消通常是通过在生产者端调用'close!'从生产者传递给消费者,然后在消费者端调用'nil'。以下是一些示例代码:https://www.refheap.com/21103 –