Clojure中标准输出的同步

时间:2011-12-07 16:54:47

标签: concurrency clojure

我有一个用Clojure编写的多线程应用程序。当多个线程写入STDOUT时,存在在控制台显示中正确显示文本的问题。我怎么能在Clojure中正确地做到这一点,所以线条不会看起来交错?我认为这将涉及某种单独的IO代理,但我不确定如何做到这一点。

1 个答案:

答案 0 :(得分:9)

  

我认为这会涉及某种单独的IO代理

是的,这应该有效。创建代理(def printer (agent nil))并使用相应的print语句调用它,例如(send printer #(println msg))。消息被放入队列中并一次一个地执行(异步)。

出于记录目的,您还可以查看使用代理商的tools.logging