【问题标题】:Clojure best way to achieve multiple threads?Clojure实现多线程的最佳方式?
【发布时间】:2011-02-02 15:06:22
【问题描述】:

我正在开发一个用 Clojure 编写的 MUD 客户端。现在,我需要两个不同的线程。一种接收来自用户的输入并将其发送到 MUD(通过一个简单的 Socket),另一种从 MUD 读取输出并将其显示给用户。

我应该只使用 Java 线程,还是应该使用某些 Clojure 特定的功能?

【问题讨论】:

  • "在所有情况下,Clojure 都不会取代 Java 线程系统,而是与它一起工作。Clojure 函数是 java.util.concurrent.Callable,因此它们与 Executor 框架等一起工作。"

标签: multithreading clojure client mud


【解决方案1】:

我建议使用 pcalls 函数,如下所示:

(defn- process-server-responses []
  (prn "server connected")
  (. java.lang.Thread sleep 1000)
  (prn "server disconnected"))

(defn- process-client-input []
  (prn "client-input start")
  (. java.lang.Thread sleep 1000)
  (prn "client-input stop"))

(pcalls process-server-responses process-client-input)

上述输出:

"server connected"
"client-input start"
"server disconnected"
"client-input stop"

此处为 pcalls 的文档:

http://richhickey.github.com/clojure/clojure.core-api.html#clojure.core/pcalls

【讨论】:

  • 对不起...我跛脚。我刚刚读到您正在编写 MUD 客户端,而不是 MUD 服务器。
  • 我已经更新了对我的回复更适用于你的问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
相关资源
最近更新 更多