2010-03-30 35 views
11

Tôi đang làm việc trên một khách hàng MUD được viết bằng Clojure. Ngay bây giờ, tôi cần hai chủ đề khác nhau. Một trong đó nhận đầu vào từ người dùng và gửi nó tới MUD (thông qua một Socket đơn giản), và một cái đọc và hiển thị đầu ra từ MUD, cho người dùng.Clojure cách tốt nhất để đạt được nhiều chủ đề?

Tôi có nên sử dụng Java Threads hay có một số tính năng cụ thể của Clojure mà tôi nên chuyển sang không?

+0

http://clojure.org/concurrent_programming là hữu ích –

+4

"Trong mọi trường hợp, Clojure không thay thế hệ thống chuỗi Java, thay vào đó nó hoạt động với nó. Các hàm clojure là java.util.concurrent.Callable, do đó chúng hoạt động với khung công tác Executor, vv " –

Trả lời

8

Tôi muốn giới thiệu cách sử dụng pcalls chức năng, như thế này:

(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 cho ở trên:

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

Documents cho pcalls đây:

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

+0

Rất tiếc ... Tôi rất xấu hổ. Tôi vừa đọc bạn đang viết một máy khách MUD chứ không phải máy chủ MUD. –

+0

Tôi đã cập nhật phản ứng của tôi đối với tôi áp dụng cho câu hỏi của bạn :) –

+0

Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan