Clojure лучший способ добиться нескольких потоков?

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

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

Ответ 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