8
我有一个用Clojure编写的多线程应用程序。当多个线程写入STDOUT时,会出现在控制台显示中正确显示文本的问题。我如何在Clojure中正确地做到这一点,所以线条不会看起来交错?我认为这会涉及某种单独的IO代理,但我不确定如何做到这一点。Clojure中标准输出的同步
我有一个用Clojure编写的多线程应用程序。当多个线程写入STDOUT时,会出现在控制台显示中正确显示文本的问题。我如何在Clojure中正确地做到这一点,所以线条不会看起来交错?我认为这会涉及某种单独的IO代理,但我不确定如何做到这一点。Clojure中标准输出的同步
我认为这将涉及到某种独立的IO代理
的是,应该工作。创建一个代理(def printer (agent nil))
并用适当的print
声明调用它,例如(send printer #(println msg))
。这些消息放入一个队列中,并一次一个地执行(异步)。
为了记录目的,你也可以看看tools.logging
,它使用代理下的代理。
这有效,但我必须通过另一个功能代理发送给代理打印作业。由于某些原因,直接向代理发送println不起作用。 – bvk256
在[本文](http://clojure.org/agents)在Clojure的网站上,它说: “从另一个**单个代理或线程**派发给代理的动作将按照他们发送,**可能交错**与从其他来源派发给相同代理**的动作**“。 这是否意味着当“**多线程**写入标准输出”时可能会出现问题? –