2010-03-30 9 views
11

Estoy trabajando en un cliente MUD escrito en Clojure. En este momento, necesito dos hilos diferentes. Una que recibe información del usuario y la envía al MUD (a través de un Socket simple) y otra que lee y muestra los resultados del MUD al usuario.Clojure ¿la mejor manera de lograr múltiples hilos?

¿Debería usar Java Threads, o hay alguna característica específica de Clojure a la que debería recurrir?

+0

http://clojure.org/concurrent_programming es útil –

+4

"En todos los casos, Clojure sí no reemplaza el sistema de hilos de Java, sino que funciona con él. Las funciones de Clojure son java.util.concurrent.Callable, por lo tanto, funcionan con el marco Executor, etc. " –

Respuesta

8

Yo recomiendo usar la función pcalls, así:

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

de salida para lo anterior:

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

Docs para pcalls aquí:

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

+0

Lo siento ... soy cojo. Acabo de leer que está escribiendo un cliente MUD, no un servidor MUD. –

+0

He actualizado mi respuesta es más aplicable a tu pregunta :) –

+0

¡Muchas gracias! –

Cuestiones relacionadas