Clojure лучший способ достижения нескольких потоков? - PullRequest
11 голосов
/ 30 марта 2010

Я работаю над клиентом MUD, написанным на Clojure.Прямо сейчас мне нужны две разные темы.Тот, который получает ввод от пользователя и отправляет его в MUD (через простой сокет), а тот, который читает и отображает вывод из MUD, для пользователя.

Должен ли я просто использовать потоки Java, илиЕсть ли какая-то особенность Clojure, к которой я должен обратиться?

1 Ответ

8 голосов
/ 30 марта 2010

Я бы порекомендовал использовать функцию 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"

Документы для ПК здесь:

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

...