2010-03-30 18 views
11

मैं क्लोजर में लिखे गए एमयूडी क्लाइंट पर काम कर रहा हूं। अभी, मुझे दो अलग-अलग धागे की आवश्यकता है। एक जो उपयोगकर्ता से इनपुट प्राप्त करता है और उसे एमयूडी (एक साधारण सॉकेट के माध्यम से) भेजता है, और जो उपयोगकर्ता को एमयूडी से आउटपुट पढ़ता है और प्रदर्शित करता है।एकाधिक धागे प्राप्त करने के लिए सबसे अच्छा तरीका क्लोजर?

क्या मुझे जावा थ्रेड का उपयोग करना चाहिए, या क्या कुछ क्लोजर-विशिष्ट सुविधा है जिसे मुझे चालू करना चाहिए?

+0

http://clojure.org/concurrent_programming उपयोगी है –

+4

"सभी मामलों में, क्लोजर करता है जावा थ्रेड सिस्टम को प्रतिस्थापित नहीं करें, बल्कि यह इसके साथ काम करता है। क्लोजर फ़ंक्शंस java.util.concurrent.Callable हैं, इसलिए वे एक्जिक्यूटर फ्रेमवर्क इत्यादि के साथ काम करते हैं। " –

उत्तर

8

मैं 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) 

आउटपुट: pcalls के लिए

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

डॉक्स यहाँ:

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

+0

क्षमा करें ... मैं लंगड़ा हूं। मैंने पढ़ा है कि आप एक एमयूडी क्लाइंट लिख रहे हैं, एमयूडी सर्वर नहीं। –

+0

मैंने अपडेट किया है मेरे प्रश्न पर मेरे प्रति अधिक प्रतिक्रिया :) –

+0

बहुत बहुत धन्यवाद! –

संबंधित मुद्दे