【发布时间】:2012-01-15 04:39:39
【问题描述】:
我有一个用 Clojure 编写的多线程应用程序。当多个线程写入 STDOUT 时,使控制台中的文本正确显示存在问题。我怎样才能在 Clojure 中正确地做到这一点,所以线条看起来不会交错?我认为这将涉及某种单独的 IO 代理,但我不确定该怎么做。
【问题讨论】:
标签: concurrency clojure
我有一个用 Clojure 编写的多线程应用程序。当多个线程写入 STDOUT 时,使控制台中的文本正确显示存在问题。我怎样才能在 Clojure 中正确地做到这一点,所以线条看起来不会交错?我认为这将涉及某种单独的 IO 代理,但我不确定该怎么做。
【问题讨论】:
标签: concurrency clojure
我认为这将涉及某种单独的 IO 代理
是的,应该可以。创建代理(def printer (agent nil)) 并使用适当的print 语句调用它,例如(send printer #(println msg))。消息被放置在一个队列中,并一次(异步)执行一条。
出于记录目的,您还可以查看tools.logging,它在后台使用代理。
【讨论】: