जेसीएसपी: Difference between revisions

From Vigyanwiki
(Created page with "{{Notability|date=November 2014}} जेसीएसपी प्रोग्रामिंग भाषा जावा (प्रोग्रामिंग भाषा)...")
 
No edit summary
Line 1: Line 1:
{{Notability|date=November 2014}}
'''जेसीएसपी''' प्रोग्रामिंग भाषा [[जावा (प्रोग्रामिंग भाषा)]] के लिए संचार अनुक्रमिक प्रक्रियाओं (सीएसपी) का कार्यान्वयन है। <ref name= बेलापुरकर|2005 >{{cite journal |last=Belapurkar |first=Abhijit |date=21 June 2005 |title=जावा प्रोग्रामर के लिए सीएसपी|url=http://www.ibm.com/developerworks/library/j-csp1/ |journal=IBM DeveloperWorks |access-date=2007-04-20}}</ref>
जेसीएसपी प्रोग्रामिंग भाषा [[जावा (प्रोग्रामिंग भाषा)]] के लिए संचार अनुक्रमिक प्रक्रियाओं (सीएसपी) का कार्यान्वयन है। <ref name= बेलापुरकर|2005 >{{cite journal |last=Belapurkar |first=Abhijit |date=21 June 2005 |title=जावा प्रोग्रामर के लिए सीएसपी|url=http://www.ibm.com/developerworks/library/j-csp1/ |journal=IBM DeveloperWorks |access-date=2007-04-20}}</ref>


हालाँकि CSP एक गणितीय प्रणाली है, JCSP को गहन गणितीय कौशल की आवश्यकता नहीं होती है, इसके बजाय प्रोग्रामर सरल नियमों का पालन करके अच्छा व्यवहार वाला सॉफ़्टवेयर प्राप्त कर सकते हैं।
हालाँकि सीएसपी एक गणितीय प्रणाली है, जेसीएसपी को गहन गणितीय कौशल की आवश्यकता नहीं होती है, इसके स्थान पर प्रोग्रामर सरल नियमों का पालन करके अच्छा व्यवहार वाला सॉफ़्टवेयर प्राप्त कर सकते हैं।


==अवलोकन==
==समीक्षा==
ऐसे चार तरीके हैं जिनसे बहु-थ्रेडेड प्रोग्राम परीक्षण के बिना असफल हो सकते हैं:<ref name=बेलापुरकर|2005 />
ऐसे चार तरीके हैं जिनसे बहु-थ्रेडेड प्रोग्राम परीक्षण के बिना असफल हो सकते हैं:<ref name=बेलापुरकर|2005 />
* [[दौड़ की स्थिति]] - साझा चर में अनिश्चित स्थिति हो सकती है क्योंकि कई थ्रेड पर्याप्त लॉकिंग के बिना समवर्ती रूप से उन तक पहुंचते हैं
* [[दौड़ की स्थिति|रेस कंडीशंस]] - साझा चर में अनिश्चित स्थिति हो सकती है क्योंकि कई थ्रेड पर्याप्त लॉकिंग के बिना समवर्ती रूप से उन तक पहुंचते हैं
*[[गतिरोध]] - दो या दो से अधिक थ्रेड तब गतिरोध में पहुंच जाते हैं जब वे ताले या अन्य संसाधनों को परस्पर विरोधी तरीके से प्राप्त करने का प्रयास करते हैं
*[[गतिरोध|डेडलॉक]] - दो या दो से अधिक थ्रेड तब गतिरोध में पहुंच जाते हैं जब वे लॉक या अन्य संसाधनों को परस्पर विरोधी तरीके से प्राप्त करने का प्रयास करते हैं
*डेडलॉक#लाइवलॉक - डेडलॉक के समान लेकिन परिणामस्वरूप सीपीयू समय की अंतहीन बर्बादी होती है
*लाइवलॉक - डेडलॉक के समान लेकिन परिणामस्वरूप सीपीयू समय की अंतहीन बर्बादी होती है
*भुखमरी - एक या अधिक थ्रेड कोई काम नहीं करते हैं, जिससे सॉफ़्टवेयर एल्गोरिदम के इच्छित परिणाम से समझौता हो जाता है
*स्टारवेशन - एक या अधिक थ्रेड कोई काम नहीं करते हैं, जिससे सॉफ़्टवेयर एल्गोरिदम के इच्छित परिणाम से समझौता हो जाता है


आम तौर पर, केवल कठोर परीक्षण से इन चार खतरों की अनुपस्थिति को साबित करना संभव नहीं है। हालाँकि कठोर परीक्षण आवश्यक है, लेकिन यह पर्याप्त नहीं है। इसके बजाय ऐसा डिज़ाइन होना आवश्यक है जो यह प्रदर्शित कर सके कि ये चार खतरे मौजूद नहीं हैं। सीएसपी इसे गणित का उपयोग करके करने की अनुमति देता है और जेसीएसपी इसे जावा प्रोग्राम में व्यावहारिक रूप से करने की अनुमति देता है।
सामान्यतः, केवल कठोर परीक्षण से इन चार खतरों की अनुपस्थिति को सिद्ध करना संभव नहीं है। हालाँकि कठोर परीक्षण आवश्यक है, लेकिन यह पर्याप्त नहीं है। इसके स्थान पर ऐसा डिज़ाइन होना आवश्यक है जो यह प्रदर्शित कर सके कि ये चार खतरे उपस्थित नहीं हैं। सीएसपी इसे गणित का उपयोग करके करने की अनुमति देता है और जेसीएसपी इसे जावा प्रोग्राम में व्यावहारिक रूप से करने की अनुमति देता है।


गणित में आधार का लाभ यह है कि पारंपरिक तदर्थ विकास की तुलना में सही व्यवहार की मजबूत गारंटी उत्पन्न की जा सकती है। सौभाग्य से, जेसीएसपी अपने उपयोगकर्ताओं को स्वयं गणितीय दृष्टिकोण अपनाने के लिए मजबूर नहीं करता है, बल्कि उन्हें पुस्तकालय को रेखांकित करने वाले गणित से लाभ उठाने की अनुमति देता है।
गणित में आधार का लाभ यह है कि पारंपरिक तदर्थ विकास की तुलना में सही व्यवहार की शक्तिशाली प्रत्याभुति उत्पन्न की जा सकती है। सौभाग्य से, जेसीएसपी अपने उपयोगकर्ताओं को स्वयं गणितीय दृष्टिकोण अपनाने के लिए विवश नहीं करता है, बल्कि उन्हें पुस्तकालय को रेखांकित करने वाले गणित से लाभ उठाने की अनुमति देता है।


ध्यान दें कि सीएसपी शब्द प्रक्रिया अनिवार्य रूप से जावा भाषा में थ्रेड के पर्याय के रूप में उपयोग की जाती है; सीएसपी में एक प्रक्रिया निष्पादन की एक हल्की इकाई है जो घटनाओं के माध्यम से बाहरी दुनिया के साथ बातचीत करती है और एक सक्रिय घटक है जो डेटा संरचनाओं को समाहित करती है जिस पर यह संचालित होता है।
ध्यान दें कि सीएसपी शब्द प्रक्रिया अनिवार्य रूप से जावा भाषा में थ्रेड के पर्याय के रूप में उपयोग की जाती है; सीएसपी में एक प्रक्रिया निष्पादन की एक हल्की इकाई है जो घटनाओं के माध्यम से बाहरी दुनिया के साथ पारस्परिक प्रभाव करती है और एक सक्रिय घटक है जो डेटा संरचनाओं को समाहित करती है जिस पर यह संचालित होता है।


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


मानक जावा एपीआई में कुछ वर्गों के बीच स्पष्ट समानता है ({{mono|java.util.concurrent}}) और कुछ जेसीएसपी में। जेसीएसपी की चैनल कक्षाएं ब्लॉकिंगक्यू के समान हैं। एक महत्वपूर्ण अंतर है: जेसीएसपी एक भी प्रदान करता है {{mono|Alternative}} इनपुट के बीच चयन की अनुमति देने के लिए वर्ग; यह क्षमता मानक जावा एपीआई में अनुपस्थित है। अल्टरनेशन उन मूल अवधारणाओं में से एक है जिसका उपयोग सीएसपी वास्तविक दुनिया में घटनाओं को मॉडल करने के लिए करता है।
मानक जावा एपीआई ({{mono|java.util.concurrent}}) में कुछ वर्गों के बीच और कुछ जेसीएसपी में स्पष्ट समानता है। जेसीएसपी की चैनल कक्षाएं ब्लॉकिंगक्यू के समान हैं। एक महत्वपूर्ण अंतर है: जेसीएसपी एक {{mono|Alternative}} इनपुट के बीच चयन की अनुमति देने के लिए वर्ग भी प्रदान करता है; यह क्षमता मानक जावा एपीआई में अनुपस्थित है। अल्टरनेशन उन मूल अवधारणाओं में से एक है जिसका उपयोग सीएसपी वास्तविक दुनिया में घटनाओं को मॉडल करने के लिए करता है।


{{mono|Alternative}} अपने राज्य स्थान के संपूर्ण गणितीय विश्लेषण द्वारा सही ढंग से काम करने के लिए सिद्ध किया गया था, यह गारंटी देते हुए कि यह कभी भी गतिरोध का कारण नहीं बन सकता है।<ref name= वेल्च|2000 >{{cite report |last1=Welch |first1=Peter |last2=Martin |first2=Jeremy |year=2000 |title=समवर्ती जावा सिस्टम का औपचारिक विश्लेषण|url=http://www.wotug.org/paperdb/send_file.php?num=44 |work=Communicating Process Architectures 2000}}</ref> इस प्रकार, यह अपने गणितीय आधार से जेसीएसपी की निर्भरता का प्रतीक है।
{{mono|Alternative}} अपने अवस्था समष्टि के संपूर्ण गणितीय विश्लेषण द्वारा सही ढंग से काम करने के लिए सिद्ध किया गया था, यह प्रत्याभुति देते हुए कि यह कभी भी गतिरोध का कारण नहीं बन सकता है। <ref name= वेल्च|2000 >{{cite report |last1=Welch |first1=Peter |last2=Martin |first2=Jeremy |year=2000 |title=समवर्ती जावा सिस्टम का औपचारिक विश्लेषण|url=http://www.wotug.org/paperdb/send_file.php?num=44 |work=Communicating Process Architectures 2000}}</ref> इस प्रकार, यह अपने गणितीय आधार से जेसीएसपी की निर्भरता का प्रतीक है।


==नेटवर्किंग परत==
==नेटवर्किंग परत==
क्योंकि [[ प्रसारण नियंत्रण प्रोटोकॉल ]] (टीसीपी) सॉकेट का निर्माण सीएसपी अर्थ में अवरुद्ध चैनलों के रूप में किया जा सकता है, इसलिए जेसीएसपी प्रक्रियाओं को कई कंप्यूटरों में वितरित करना संभव है। यह जेसीएसपी नेट एक्सटेंशन का उपयोग करके हासिल किया जाता है जो टीसीपी का उपयोग करके सीएसपी शब्दार्थ वाले चैनल प्रदान करता है। क्योंकि सीएसपी संरचनागत है, व्यवहार की दृष्टि से इससे कोई फर्क नहीं पड़ता कि प्रक्रियाएं सह-स्थित हैं या वितरित हैं। एकमात्र अंतर सापेक्ष प्रदर्शन में है। इसलिए यह संभव है, उदाहरण के लिए, एक ही सर्वर पर एक एप्लिकेशन विकसित करना, फिर प्रदर्शन को अनुकूलित करने के उद्देश्य से उसी एप्लिकेशन के मल्टी-प्रोसेसर संस्करण की तुलना करना।
क्योंकि [[ प्रसारण नियंत्रण प्रोटोकॉल |ट्रांसमिशन कण्ट्रोल प्रोटोकॉल]] (टीसीपी) सॉकेट का निर्माण सीएसपी अर्थ में अवरुद्ध चैनलों के रूप में किया जा सकता है, इसलिए जेसीएसपी प्रक्रियाओं को कई कंप्यूटरों में वितरित करना संभव है। यह जेसीएसपी नेट एक्सटेंशन का उपयोग करके प्राप्त किया जाता है जो टीसीपी का उपयोग करके सीएसपी शब्दार्थ वाले चैनल प्रदान करता है। क्योंकि सीएसपी संरचनागत है, व्यवहार की दृष्टि से इससे कोई असमानता नहीं आती है कि प्रक्रियाएं सह-स्थित हैं या वितरित हैं। एकमात्र अंतर सापेक्ष प्रदर्शन में है। इसलिए यह संभव है, उदाहरण के लिए, एक ही सर्वर पर एक एप्लिकेशन विकसित करना, फिर प्रदर्शन को अनुकूलित करने के उद्देश्य से उसी एप्लिकेशन के मल्टी-प्रोसेसर संस्करण की तुलना करना।


==अन्य संस्करण==
==अन्य संस्करण==


===रोबोट संस्करण===
===रोबोट संस्करण===
जेसीएसपी री, प्रोफेसर जॉन केरिज, एलेक्स पानायोटोपोलोस और पैट्रिक लिस्मोर द्वारा 2008 के आसपास [[ नेपियर विश्वविद्यालय ]] एडिनबर्ग में विकसित जेसीएसपी पैकेज का एक अत्यधिक संक्षिप्त संस्करण है। रोबोटिक्स वातावरण के लिए जेसीएसपी और मोबाइल वातावरण के लिए जेसीएसपी पर शोध नेपियर यूनिवर्सिटी एडिनबर्ग में शोध का एक सक्रिय क्षेत्र है। 'जेसीएसपी री' का कार्यशील कार्यान्वयन रोबोटों के लिए समान समवर्ती सॉफ़्टवेयर के विकास की अनुमति देता है। विशेष रूप से, इस शोध के लिए लक्षित रोबोट [[लेगो माइंडस्टॉर्म एनएक्सटी]] थे क्योंकि वे लोकप्रिय [[ दूर ]] एनएक्सजे वर्चुअल मशीन चला सकते हैं जो जावा स्रोत कोड निष्पादित करता है।<ref>{{Cite journal|title=JCSPre: the Robot Edition to Control LEGO NXT Robots |authors=Jon Kerridge, Alex Panayotopoulos, Patrick Lismore |pages=255–270 |journal=Concurrent Systems Engineering Series Volume 66: Communicating Process Architectures 2008 |year=2008 |doi=10.3233/978-1-58603-907-3-255 |publisher=IOS Press Books |url=http://www.patricklismore.com/LinkClick.aspx?fileticket=SPV2uxPASHo%3D&tabid=78 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20100418184718/http://www.patricklismore.com/LinkClick.aspx?fileticket=SPV2uxPASHo%3D&tabid=78 |archivedate=2010-04-18 }}</ref>
जेसीएसपी री, प्रोफेसर जॉन केरिज, एलेक्स पानायोटोपोलोस और पैट्रिक लिस्मोर द्वारा 2008 के आसपास [[ नेपियर विश्वविद्यालय |नेपियर विश्वविद्यालय]] एडिनबर्ग में विकसित जेसीएसपी पैकेज का एक अत्यधिक संक्षिप्त संस्करण है। रोबोटिक्स वातावरण के लिए जेसीएसपी और मोबाइल वातावरण के लिए जेसीएसपी पर शोध नेपियर यूनिवर्सिटी एडिनबर्ग में शोध का एक सक्रिय क्षेत्र है। 'जेसीएसपी री' का कार्यशील कार्यान्वयन रोबोटों के लिए समान समवर्ती सॉफ़्टवेयर के विकास की अनुमति देता है। विशेष रूप से, इस शोध के लिए लक्षित रोबोट [[लेगो माइंडस्टॉर्म एनएक्सटी]] थे क्योंकि वे लोकप्रिय [[ दूर |लेजोस]] एनएक्सजे वर्चुअल मशीन चला सकते हैं जो जावा स्रोत कोड निष्पादित करता है। <ref>{{Cite journal|title=JCSPre: the Robot Edition to Control LEGO NXT Robots |authors=Jon Kerridge, Alex Panayotopoulos, Patrick Lismore |pages=255–270 |journal=Concurrent Systems Engineering Series Volume 66: Communicating Process Architectures 2008 |year=2008 |doi=10.3233/978-1-58603-907-3-255 |publisher=IOS Press Books |url=http://www.patricklismore.com/LinkClick.aspx?fileticket=SPV2uxPASHo%3D&tabid=78 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20100418184718/http://www.patricklismore.com/LinkClick.aspx?fileticket=SPV2uxPASHo%3D&tabid=78 |archivedate=2010-04-18 }}</ref>




==अन्य भाषाओं से जेसीएसपी का उपयोग करना==
==अन्य भाषाओं से जेसीएसपी का उपयोग करना==
जेसीएसपी अनिवार्य रूप से एक शुद्ध-जावा एपीआई है (हालांकि एक शोध विकल्प मौजूद है जो जेवीएम में [[सी-सीएसपी]] एक्सटेंशन का उपयोग करता है)। इस प्रकार, यह सैद्धांतिक रूप से [[स्काला (प्रोग्रामिंग भाषा)]] और [[ग्रूवी (प्रोग्रामिंग भाषा)]] अनुप्रयोगों के साथ-साथ जावा अनुप्रयोगों में समवर्तीता के लिए उपयुक्त है।
जेसीएसपी अनिवार्य रूप से एक शुद्ध-जावा एपीआई है (हालांकि एक शोध विकल्प उपस्थित है जो जेवीएम में [[सी-सीएसपी]] एक्सटेंशन का उपयोग करता है)। इस प्रकार, यह सैद्धांतिक रूप से [[स्काला (प्रोग्रामिंग भाषा)]] और [[ग्रूवी (प्रोग्रामिंग भाषा)]] अनुप्रयोगों के साथ-साथ जावा अनुप्रयोगों में समवर्तीता के लिए उपयुक्त है।


इसलिए जेसीएसपी स्काला के एक्टर मॉडल का विकल्प प्रदान कर सकता है। जेसीएसपी सिंक्रनाइज़ संचार का उपयोग करता है और अभिनेता बफर्ड (एसिंक्रोनस) संचार का उपयोग करते हैं, जिनमें से प्रत्येक के पास कुछ परिस्थितियों में अपने फायदे हैं। जेसीएसपी अपने चैनलों को बफर करने की अनुमति देता है ताकि आसानी से [[अभिनेता मॉडल]] का अनुकरण किया जा सके; इसका उलट सत्य नहीं है।
इसलिए जेसीएसपी स्काला के एक्टर मॉडल का विकल्प प्रदान कर सकता है। जेसीएसपी सिंक्रनाइज़ संचार का उपयोग करता है और ऐक्टर् बफर्ड (एसिंक्रोनस) संचार का उपयोग करते हैं, जिनमें से प्रत्येक के पास कुछ परिस्थितियों में अपने लाभ हैं। जेसीएसपी अपने चैनलों को बफर करने की अनुमति देता है ताकि आसानी से [[अभिनेता मॉडल|ऐक्टर् मॉडल]] का अनुकरण किया जा सके; इसका उलट सत्य नहीं है।


==यह भी देखें==
==यह भी देखें==
Line 45: Line 44:


==बाहरी संबंध==
==बाहरी संबंध==
*[http://www.cs.kent.ac.uk/projects/ofa/jcsp/ JCSP project] at the University of Kent
*[http://www.cs.kent.ac.uk/projects/ofa/jcsp/ जेसीएसपी project] at the केंट विश्वविद्यालय
*[http://www.patricklismore.com/jcspre/ JCSP re]{{dead link|date=December 2017 |bot=InternetArchiveBot |fix-attempted=yes}} early beta release
*[http://www.patricklismore.com/jcspre/ जेसीएसपी re]{{dead link|date=December 2017 |bot=InternetArchiveBot |fix-attempted=yes}} प्रारंभिक बीटा रिलीज़


{{DEFAULTSORT:Jcsp}}[[Category: जावा प्लेटफार्म सॉफ्टवेयर]] [[Category: समवर्ती कंप्यूटिंग]]  
{{DEFAULTSORT:Jcsp}}[[Category: जावा प्लेटफार्म सॉफ्टवेयर]] [[Category: समवर्ती कंप्यूटिंग]]  

Revision as of 06:25, 18 July 2023

जेसीएसपी प्रोग्रामिंग भाषा जावा (प्रोग्रामिंग भाषा) के लिए संचार अनुक्रमिक प्रक्रियाओं (सीएसपी) का कार्यान्वयन है। [1]

हालाँकि सीएसपी एक गणितीय प्रणाली है, जेसीएसपी को गहन गणितीय कौशल की आवश्यकता नहीं होती है, इसके स्थान पर प्रोग्रामर सरल नियमों का पालन करके अच्छा व्यवहार वाला सॉफ़्टवेयर प्राप्त कर सकते हैं।

समीक्षा

ऐसे चार तरीके हैं जिनसे बहु-थ्रेडेड प्रोग्राम परीक्षण के बिना असफल हो सकते हैं:[1]

  • रेस कंडीशंस - साझा चर में अनिश्चित स्थिति हो सकती है क्योंकि कई थ्रेड पर्याप्त लॉकिंग के बिना समवर्ती रूप से उन तक पहुंचते हैं
  • डेडलॉक - दो या दो से अधिक थ्रेड तब गतिरोध में पहुंच जाते हैं जब वे लॉक या अन्य संसाधनों को परस्पर विरोधी तरीके से प्राप्त करने का प्रयास करते हैं
  • लाइवलॉक - डेडलॉक के समान लेकिन परिणामस्वरूप सीपीयू समय की अंतहीन बर्बादी होती है
  • स्टारवेशन - एक या अधिक थ्रेड कोई काम नहीं करते हैं, जिससे सॉफ़्टवेयर एल्गोरिदम के इच्छित परिणाम से समझौता हो जाता है

सामान्यतः, केवल कठोर परीक्षण से इन चार खतरों की अनुपस्थिति को सिद्ध करना संभव नहीं है। हालाँकि कठोर परीक्षण आवश्यक है, लेकिन यह पर्याप्त नहीं है। इसके स्थान पर ऐसा डिज़ाइन होना आवश्यक है जो यह प्रदर्शित कर सके कि ये चार खतरे उपस्थित नहीं हैं। सीएसपी इसे गणित का उपयोग करके करने की अनुमति देता है और जेसीएसपी इसे जावा प्रोग्राम में व्यावहारिक रूप से करने की अनुमति देता है।

गणित में आधार का लाभ यह है कि पारंपरिक तदर्थ विकास की तुलना में सही व्यवहार की शक्तिशाली प्रत्याभुति उत्पन्न की जा सकती है। सौभाग्य से, जेसीएसपी अपने उपयोगकर्ताओं को स्वयं गणितीय दृष्टिकोण अपनाने के लिए विवश नहीं करता है, बल्कि उन्हें पुस्तकालय को रेखांकित करने वाले गणित से लाभ उठाने की अनुमति देता है।

ध्यान दें कि सीएसपी शब्द प्रक्रिया अनिवार्य रूप से जावा भाषा में थ्रेड के पर्याय के रूप में उपयोग की जाती है; सीएसपी में एक प्रक्रिया निष्पादन की एक हल्की इकाई है जो घटनाओं के माध्यम से बाहरी दुनिया के साथ पारस्परिक प्रभाव करती है और एक सक्रिय घटक है जो डेटा संरचनाओं को समाहित करती है जिस पर यह संचालित होता है।

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

मानक जावा एपीआई (java.util.concurrent) में कुछ वर्गों के बीच और कुछ जेसीएसपी में स्पष्ट समानता है। जेसीएसपी की चैनल कक्षाएं ब्लॉकिंगक्यू के समान हैं। एक महत्वपूर्ण अंतर है: जेसीएसपी एक Alternative इनपुट के बीच चयन की अनुमति देने के लिए वर्ग भी प्रदान करता है; यह क्षमता मानक जावा एपीआई में अनुपस्थित है। अल्टरनेशन उन मूल अवधारणाओं में से एक है जिसका उपयोग सीएसपी वास्तविक दुनिया में घटनाओं को मॉडल करने के लिए करता है।

Alternative अपने अवस्था समष्टि के संपूर्ण गणितीय विश्लेषण द्वारा सही ढंग से काम करने के लिए सिद्ध किया गया था, यह प्रत्याभुति देते हुए कि यह कभी भी गतिरोध का कारण नहीं बन सकता है। [2] इस प्रकार, यह अपने गणितीय आधार से जेसीएसपी की निर्भरता का प्रतीक है।

नेटवर्किंग परत

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

अन्य संस्करण

रोबोट संस्करण

जेसीएसपी री, प्रोफेसर जॉन केरिज, एलेक्स पानायोटोपोलोस और पैट्रिक लिस्मोर द्वारा 2008 के आसपास नेपियर विश्वविद्यालय एडिनबर्ग में विकसित जेसीएसपी पैकेज का एक अत्यधिक संक्षिप्त संस्करण है। रोबोटिक्स वातावरण के लिए जेसीएसपी और मोबाइल वातावरण के लिए जेसीएसपी पर शोध नेपियर यूनिवर्सिटी एडिनबर्ग में शोध का एक सक्रिय क्षेत्र है। 'जेसीएसपी री' का कार्यशील कार्यान्वयन रोबोटों के लिए समान समवर्ती सॉफ़्टवेयर के विकास की अनुमति देता है। विशेष रूप से, इस शोध के लिए लक्षित रोबोट लेगो माइंडस्टॉर्म एनएक्सटी थे क्योंकि वे लोकप्रिय लेजोस एनएक्सजे वर्चुअल मशीन चला सकते हैं जो जावा स्रोत कोड निष्पादित करता है। [3]


अन्य भाषाओं से जेसीएसपी का उपयोग करना

जेसीएसपी अनिवार्य रूप से एक शुद्ध-जावा एपीआई है (हालांकि एक शोध विकल्प उपस्थित है जो जेवीएम में सी-सीएसपी एक्सटेंशन का उपयोग करता है)। इस प्रकार, यह सैद्धांतिक रूप से स्काला (प्रोग्रामिंग भाषा) और ग्रूवी (प्रोग्रामिंग भाषा) अनुप्रयोगों के साथ-साथ जावा अनुप्रयोगों में समवर्तीता के लिए उपयुक्त है।

इसलिए जेसीएसपी स्काला के एक्टर मॉडल का विकल्प प्रदान कर सकता है। जेसीएसपी सिंक्रनाइज़ संचार का उपयोग करता है और ऐक्टर् बफर्ड (एसिंक्रोनस) संचार का उपयोग करते हैं, जिनमें से प्रत्येक के पास कुछ परिस्थितियों में अपने लाभ हैं। जेसीएसपी अपने चैनलों को बफर करने की अनुमति देता है ताकि आसानी से ऐक्टर् मॉडल का अनुकरण किया जा सके; इसका उलट सत्य नहीं है।

यह भी देखें

  • अनुक्रमिक प्रक्रियाओं का संचार, जेसीएसपी में अंतर्निहित गणित

संदर्भ

  1. 1.0 1.1 Belapurkar, Abhijit (21 June 2005). "जावा प्रोग्रामर के लिए सीएसपी". IBM DeveloperWorks. Retrieved 2007-04-20.
  2. Welch, Peter; Martin, Jeremy (2000). समवर्ती जावा सिस्टम का औपचारिक विश्लेषण. Communicating Process Architectures 2000 (Report).
  3. Jon Kerridge, Alex Panayotopoulos, Patrick Lismore (2008). "JCSPre: the Robot Edition to Control LEGO NXT Robots". Concurrent Systems Engineering Series Volume 66: Communicating Process Architectures 2008. IOS Press Books: 255–270. doi:10.3233/978-1-58603-907-3-255. Archived from the original on 2010-04-18.{{cite journal}}: CS1 maint: bot: original URL status unknown (link) CS1 maint: uses authors parameter (link)


बाहरी संबंध