Clojure实现多线程的最佳方式?

发布于 2024-08-27 11:54:24 字数 150 浏览 10 评论 0原文

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

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

I am working on a MUD client written in Clojure. Right now, I need two different threads. One which receives input from the user and sends it out to the MUD (via a simple Socket), and one that reads and displays output from the MUD, to the user.

Should I just use Java Threads, or is there some Clojure-specific feature I should be turning to?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴我心暖 2024-09-03 11:54:24

我建议使用 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

I would recommend using the pcalls function, like this:

(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)

Output for the above:

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

Docs for pcalls here:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文