2010-03-30 14 views
11

Sto lavorando su un client MUD scritto in Clojure. In questo momento, ho bisogno di due thread diversi. Uno che riceve input dall'utente e lo invia al MUD (tramite un semplice Socket), e uno che legge e visualizza l'output dal MUD, all'utente.Clojure modo migliore per ottenere più thread?

Devo usare solo Java Threads o ci sono alcune funzionalità specifiche di Clojure a cui dovrei rivolgermi?

+0

http://clojure.org/concurrent_programming è utile –

+4

"In tutti i casi, Clojure fa non sostituire il sistema di thread Java, piuttosto funziona con esso. Le funzioni Clojure sono java.util.concurrent.Callable, quindi funzionano con il framework Executor ecc. " –

risposta

8

mi consiglia di utilizzare la funzione pcalls, in questo modo:

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

Uscita per quanto sopra:

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

Documenti per pcalls qui:

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

+0

Scusa ... Sono zoppo. Ho appena letto che stai scrivendo un client MUD, non un server MUD. –

+0

Ho aggiornato la mia risposta a me più applicabile alla tua domanda :) –

+0

Grazie mille! –

Problemi correlati