我正在开发一个用 Clojure 编写的 MUD 客户端。现在,我需要两个不同的线程。一种接收来自用户的输入并将其发送到 MUD(通过一个简单的 Socket),另一种从 MUD 读取并显示输出给用户。
我应该只使用 Java 线程,还是应该求助于某些 Clojure 特定的功能?
我正在开发一个用 Clojure 编写的 MUD 客户端。现在,我需要两个不同的线程。一种接收来自用户的输入并将其发送到 MUD(通过一个简单的 Socket),另一种从 MUD 读取并显示输出给用户。
我应该只使用 Java 线程,还是应该求助于某些 Clojure 特定的功能?
我建议使用 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