Clojure的未来承诺依赖于我

时间:2010-08-03 04:00:34

标签: concurrency clojure

当我运行以下代码时,它基本上按照我的意图运行,除了它在未来完成后挂起。我错过了什么 - 某种“密切的代理人/线程”电话?我该怎么做?

(def name-to-greet (promise))

(future
    (println "Hello," @name-to-greet))

(print "What is your name? ")
(flush)
(deliver name-to-greet (read-line))

1 个答案:

答案 0 :(得分:7)

Futures使用代理线程池,它使用非守护程序线程,这意味着在您调用(shutdown-agents)之前Clojure不会关闭。 imho,这是假的(见my comments here),我已经提出Rich的建议,他会考虑在1.2之后。