2013-10-14 7 views
8

इस blog post लेखक में लिखते हैं:क्लोजर का core.async जेन स्ट्रीट के ओकैमल कोर असिंक के समान है?

हालांकि, Grenchman जेन स्ट्रीट, OCaml के सबसे बड़े औद्योगिक उपयोगकर्ताओं में से एक से कोर और Async पुस्तकालयों पर बनाया गया है। Async monadic अशुद्ध-concurrency के लिए अनुमति देता है जो अन्य घटना संचालित उपकरणों के कई कॉलबैक सिरदर्द से बचाता है, लेकिन यह काफी monolithic है।

जम्मू ane Street Documentation Page for Core Async पर वे के रूप में वर्णन:

विशेष रूप से, हम चाहते हैं कि Async, अपने कार्यक्रम के संगामिति को नियंत्रित करना आसान संभव दौड़ की स्थिति के बारे में तर्क करने करने का एक बेहतर है लगता है।

मेरा प्रश्न है - क्या core.async in Clojure और ओसीएमएल में कोर असिंक के बीच समानताएं हैं? मैं पूछता हूं क्योंकि 'कॉलबैक सिरदर्द से बचने के लिए गलत समरूपता' क्लोजर में core.async के अनुप्रयोग के समान ही लगता है।

उत्तर

8

मैं प्रमुख समानताओं का पता नहीं लगा सकता। क्लोजर के core.async की अवधारणा ज्यादातर गो के समवर्ती मॉडल पर आधारित होती है - कई नाम समान हैं, संचार के लिए चैनल और यहां तक ​​कि go मैक्रो कोड को अतुल्यकालिक रूप से निष्पादित करने के लिए, जैसे गो का कीवर्ड जिसे भाषा का नाम दिया गया है।

दूसरी ओर जेन स्ट्रीट Async की अवधारणा the introductory documentation से इस वाक्य में संक्षेप है:

संक्षेप में, विचार गैर रिक्तिपूर्व उपयोगकर्ता के स्तर धागे और प्रथम श्रेणी के अवरुद्ध उपयोग करने के लिए है टाइप सिस्टम में व्यक्त अवरोध के साथ संचालन।

यह विशेष प्रकार Deferred.t का उपयोग करता है जो अतुल्यकालिक कंप्यूटेशंस के परिणामों को संवाद करने के लिए करता है जो चैनलों की तुलना में क्लोजर वायदा के समान होता है। यह ओएस थ्रेड को पूरी तरह से छोड़ देता है और इसके बजाय उपयोगकर्ता थ्रेड का उपयोग करता है, जबकि core.async ओएस थ्रेड्स का उपयोग करता है (कम से कम अगर वे उपलब्ध हैं)।

संपादित: कुछ आगे की जांच करने पर, उस में एक स्पष्ट समानता ओएस धागे बांधने ऊपर के बिना दोनों पुस्तकालयों कई अवरुद्ध संचालन के संयोजन के लिए साधन प्रदान करने पर ध्यान केंद्रित किया है। और Async Pipe मॉड्यूल के माध्यम से चैनल (Deferred.t के अलावा) प्रदान करता है।

+0

यदि मैं एक नवागत हूं, तो क्या आप दूसरे पर सलाह देते हैं? – BlueTrin

+1

@ ब्लूट्रिन: चूंकि एक ओकैम लाइब्रेरी है और एक क्लोजर के लिए है, इसलिए मैं आपको जो भी भाषा अधिक आरामदायक/अन्य सुविधाओं या पुस्तकालयों (समेकन सहायता के अलावा) के आधार पर चुनने का सुझाव दूंगा। अच्छी उच्च स्तरीय समवर्ती पुस्तकालयों के लिए, ये दोनों नौकरी करते हैं, हालांकि क्लोजर विशेष रूप से मानक पुस्तकालय में अन्य समवर्ती मॉडल के लिए भी अच्छा समर्थन करता है। –

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