我有一个用Clojure编写的多线程应用程序。当多个线程写入STDOUT时,存在在控制台显示中正确显示文本的问题。我怎么能在Clojure中正确地做到这一点,所以线条不会看起来交错?我认为这将涉及某种单独的IO代理,但我不确定如何做到这一点。
答案 0 :(得分:9)
我认为这会涉及某种单独的IO代理
是的,这应该有效。创建代理(def printer (agent nil))
并使用相应的print
语句调用它,例如(send printer #(println msg))
。消息被放入队列中并一次一个地执行(异步)。
出于记录目的,您还可以查看使用代理商的tools.logging
。