2013-07-05 4 views
11

पुस्तक में Communicating Sequential Processes पुस्तक में घटनाओं को परिभाषित करने में काफी समय व्यतीत किया गया है, जिसमें कोई दिशा नहीं है और इसमें कई स्वतंत्र प्रक्रियाएं शामिल हो सकती हैं।सीएसपी कार्यान्वयन केवल चैनलों को कवर क्यों करते हैं?

केवल अध्याय 4 में चैनल पेश किए जाते हैं, जिन्हें निर्देशित किया जाता है और 2 प्रक्रियाओं को शामिल किया जाता है।

फिर भी ओएसएएम, गो, लुआसीएसपी और क्लोजर.कोर.एसिंक सहित सीएसपी के सभी कार्यान्वयन केवल चैनलों को लागू करते हैं।

हालांकि अधिकांश व्यावहारिक समस्याओं को (प्रसारण) चैनलों के साथ हल किया जा सकता है, मुझे आश्चर्य है कि पुस्तक उन पर इतना समय क्यों बिताती है जबकि कोई भी उनका उपयोग नहीं करता है।

उत्तर

2

ओकम-पीआई में, बाधाएं चैनलों के लिए एक महत्वपूर्ण सहायक हैं। बाधा के साथ, प्रत्येक नामांकित प्रक्रिया बाधा पर तब तक प्रतीक्षा करती है जब तक कि उन्होंने ऐसा नहीं किया है। इस बिंदु पर वे सभी जारी किए गए हैं। यह सीएसपी कार्यक्रम के एक गैर-चैनल रूप का एक उदाहरण है।

ओकम-पीआई चैनलों का उपयोग करके एक विस्तारित मिलनसार भी है। यह चैनलों के उपयोग का एक बहुत अलग पैटर्न है, जो एडा में मिलनसार के समान ही है।

+0

क्या जावा में साइक्लिकबैरियर के समान ही अवधारणा है? http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CyclicBarrier.html – Pepijn

+0

मुझे लगता है कि वे अवधारणा में व्यापक रूप से समान हैं। मुझे नहीं पता कि वे ठीक विवरण में समान हैं या नहीं। ओकम-पीआई बाधा का एक अत्यधिक कुशल कार्यान्वयन है (जैसा कि इसके सभी सिंक्रनाइज़ेशन प्राइमेटिव हैं)। –

9

अच्छी तरह से सभी पुस्तकें happened before कार्यान्वयन के पहले। इसलिए आपका प्रश्न बेहतर रूप से तैयार किया गया है:

सीएसपी के किसी भी कार्यान्वयन को घटनाओं पर एक बड़ा ध्यान क्यों नहीं दिया गया है, भले ही पुस्तक उन्हें बहुत अधिक उभारा।

असल में, घटनाओं को एक भाषा का प्रथम श्रेणी का नागरिक बनाना एक निश्चित उपयोग विशिष्टता देता है जो शायद general purpose programming language के लिए बहुत संकीर्ण होगा।

इसके अतिरिक्त, यदि आप event driven programming में हैं, तो आप आसानी से चैनलों (और अन्य संरचनाओं) पर ईवेंट को कार्यान्वित कर सकते हैं।

+2

यह बाद की टिप्पणी tautologous है। सीएसपी और चैनल स्वाभाविक रूप से एक घटना संचालित शैली प्रदान करते हैं। अंतर यह है कि चैनल * घटनाओं को संभालने के लिए कॉलबैक की आवश्यकता नहीं है। –

+1

यह घटनाओं की तुलना में अधिक लॉकिंग/अनलॉकिंग है। एक चैनल के माध्यम से प्रेषित चीज कुछ भी हो सकती है। – thwd

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