समवर्ती कंप्यूटिंग

From alpha
Jump to navigation Jump to search

समवर्ती गणना कंप्यूटिंग का एक रूप है जिसमें कई संगणनाएँ समवर्ती रूप से निष्पादित की जाती हैं।अतिव्यापक अवधि के दौरान क्रमिक रूप से अगली शुरूआत पहले की जाती है।

यह प्रणाली की एक संपत्ति है जो एक कंप्यूटर प्रोग्राम या संगणक संजाल जहां प्रत्येक प्रक्रिया के लिए एक अलग निष्पादन बिंदु का नियंत्रण होता है। एक 'समवर्ती प्रणाली' वह है जहां एक संगणना अन्य सभी संगणनाओं को पूरा होने की प्रतीक्षा किए ही आगे बढ़ जाती हैं।[1]समवर्ती गणना मॉड्यूलर प्रोग्रामिंग का एक रूप है। इसके प्रोग्रामिंग प्रतिमान में एक समग्र अभिकलन तथाअपघटन (कंप्यूटर विज्ञान) उप-गणनाओं में होता है जिसे समवर्ती रूप से निष्पादित किया जा सकता है। एडवर्ड डिजस्ट्रा तथा ब्रिन्च हेन्सन और सी.ए.आर. होरे ने कहा कि समवर्ती गणना के क्षेत्र में यह सम्मिलित हैं।[2]


परिचय

समवर्ती गणना की अवधारणा समानांतर गणना से संबंधित लेकिन विशिष्ट अवधारणा के साथ अधिकतर भ्रमित होती है [3][4] जबकि दोनों को समान अवधि के साथ कई प्रक्रियाओं के रूप में वर्णित किया जा सकता है। समानांतर गणना में निष्पादन एक ही भौतिक क्षण में होता है उदाहरण के लिए एक बहु-प्रोसेसर मशीन की अलग केंद्रीय प्रसंस्करण इकाई पर संगणना को गति देने के लक्ष्य के साथ-एक (मल्टी-कोर प्रोसेसर) समानांतर गणना असंभव है। एकल प्रोसेसर किसी भी क्षण (किसी भी घड़ी चक्र के दौरान) गणना कर सकता है [lower-alpha 1] तथा इसके विपरीत समवर्ती गणना में प्रक्रिया का जीवनकाल अतिव्यापक होता है किन्तु यहाँ निष्पादन की आवश्यकता नहीं होती है। इसका लक्ष्य बाहरी दुनिया में प्रक्रियाओं को मॉडल करना है जो समवर्ती रूप से होते हैं कि एक ही समय में सर्वर तक पहुंचने वाले कई क्लाइंट तथा कई समवर्ती संचार भागों से बनी सॉफ्टवेयर प्रणाली की संरचना जटिलता से निपटने के लिए उपयोगी हो सकती है भले ही भागों को समानांतर में निष्पादित किया जा सके।[5]: 1 उदाहरण के लिए समय-साझाकरण के टुकड़े के माध्यम से प्रत्येक प्रक्रिया के निष्पादन चरणों को अंतःस्थापित करके समवर्ती प्रक्रियाओं को एक कोर पर निष्पादित किया जा सकता है एक समय में केवल एक प्रक्रिया चलती है और यदि यह अपने समय के टुकड़े के दौरान पूरा नहीं होता है तो इसे रोक दिया जाता है और दूसरी प्रक्रिया शुरू होती है तथा बाद में मूल प्रक्रिया शुरू हो जाती है। इस तरह कई प्रक्रियाएं एक ही पल में निष्पादन के माध्यम से होती हैं लेकिन उस पल में केवल एक प्रक्रिया को निष्पादित किया जा सकता है।[citation needed]समवर्ती संगणनाओं को समानांतर में निष्पादित किया जा सकता है [3][6] उदाहरण प्रत्येक प्रक्रिया को एक अलग प्रोसेसर या एक नेटवर्क पर गणना वितरित करके सामान्य तौर पर समानांतर प्रोग्रामिंग के लिए भाषाएं उपकरण और तकनीकें समवर्ती प्रोग्रामिंग के लिए उपयुक्त नहीं हो सकती हैं और इसके विपरीत[citation needed]जब एक समवर्ती प्रणाली में कार्यों को निष्पादित किया जाता है तो समय निर्धारण गणना पर निर्भर करता है और कार्यों को हमेशा समवर्ती रूप से निष्पादित करने की आवश्यकता नहीं होती है। उदाहरण के लिए दिए गए दो कार्य टी1 और टी2 हैं।[citation needed]

  • टी1 को टी2 या इसके विपरीत होने से पहले निष्पादित और समाप्त किया जा सकता है।
  • टी1 और टी2 को वैकल्पिक रूप से निष्पादित किया जा सकता है।
  • टी1 और टू2 को एक ही समय पर एक साथ निष्पादित किया जा सकता है ।

अनुक्रमिक शब्द समवर्ती और समानांतर दोनों के लिए एक विलोम के रूप में प्रयोग किया जाता है जब इन्हें स्पष्ट रूप से अलग किया जाता है तो समवर्ती/अनुक्रमिक और समानांतर/सीरियल को विरोधी जोड़े के रूप में उपयोग किया जाता है।[7] एक कार्यबल जिसमें एक समय में एक कार्य को निष्पादित करते हैं बिना इंटरलीविंग के कार्य तब तक शुरू नहीं होता जब कि समाप्त कार्यों का एक सेट जो क्रमिक रूप से निर्धारित किया जा सकता है वह क्रमबद्धता संगमिति नियंत्रण को सरल करता है।[citation needed]


साझा संसाधनों तक पहुंच का समन्वय करना

समवर्ती कार्यक्रमों की बनावट करने में मुख्य चुनौती समवर्ती नियंत्रण है। विभिन्न गणतीय निष्पादनों के बीच बातचीत या संचार का सही क्रम सुनिश्चित करना और निष्पादन के बीच साझा किए गए संसाधनों तक पहुंच का समन्वय करना [6]संभावित समस्याओं में दौड़ की शर्त सॉफ्टवेयर गतिरोध और संसाधन भुखमरी सम्मिलित हैं। उदाहरण के लिए साझा संसाधन द्वारा दर्शाए गए चेकिंग खाते से निकासी करने के लिए निम्नलिखित एल्गोरिथम पर विचार करें ।

वाक्यविन्यास लैंग = सीपीपी लाइन हाइलाइट = 3,5 बूल निकासी


कल्पना करना बैलेंस=500और दो समवर्ती धागे हैं साथ ही(300) और (350)यदि दोनों ऑपरेशनों में लाइन 3 को लाइन 5 से पहले निष्पादित किया जाता है तो दोनों ऑपरेशन उसे खोज लेंगे बैलेंस= एक साथ का मूल्यांकन करता है और निकासी राशि घटाने के लिए निष्पादन करता है। जबकि दोनों प्रक्रियाएं अपनी निकासी करती हैं इसलिए निकाली गई कुल राशि मूल शेष राशि से अधिक होगी साझा संसाधनों के साथ इस तरह की समस्याएं संगमिति नियंत्रण या गैर-अवरुद्ध एल्गोरिदम के उपयोग से लाभान्वित होती हैं।

लाभ

समवर्ती गणना के लाभों में सम्मिलित हैं-

  • कार्यक्रम थ्रूपुट में वृद्धि - एक समवर्ती कार्यक्रम के समानांतर निष्पादन गुस्ताफसन के नियम के अनुसार प्रोसेसर की संख्या के अनुपात में आनुपातिक रूप से बढ़ने के लिए एक निश्चित समय में पूर्ण किए गए कार्यों की संख्या की अनुमति देता है।
  • इनपुट/आउटपुट के लिए उच्च प्रतिक्रियात्मकता, इनपुट/आउटपुट गहन कार्यक्रम अधिकतर इनपुट या आउटपुट संचालन के पूरा होने की प्रतीक्षा करते हैं। समवर्ती गणना उस समय की अनुमति देता है जो किसी अन्य कार्य के लिए उपयोग किए जाने की प्रतीक्षा में व्यतीत होगा।[citation needed]
  • अधिक उपयुक्त कार्यक्रम संरचना-कुछ समस्याएं और समस्या डोमेन समवर्ती कार्यों या प्रक्रियाओं के रूप में प्रतिनिधित्व के लिए उपयुक्त हैं।[citation needed]


मॉडल

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

इनपुट/आउटपुट स्वचालित इनपुट/आउटपुट ऑटोमेटा को 1987 में पेश किया गया था।

समवर्ती प्रणालियों के व्यवहार का वर्णन करने के लिए लामपोर्ट के क्रियाओं का अस्थायी तर्क टीएलए और गणितीय मॉडल जैसे ट्रेस सिद्धांत और अभिनेता मॉडल सिद्धांत जैसे तर्क भी विकसित किए गए हैं।

सॉफ्टवेयर लेनदेन स्मृति डेटाबेस प्रबंधन प्रणाली से परमाणु प्रतिबद्ध की अवधारणा को उधार लेती है और उन्हें स्मृति अनुलेख पर लागू करती है।

संगति मॉडल

समवर्ती गणना की भाषा और बहुगुणक कार्यक्रम में एक संगति मॉडल होना चाहिए। संगत मॉडल नियमों को परिभाषित करता है कि कंप्यूटर डेटा संग्रहण पर संचालन कैसे होता है और परिणाम कैसे उत्पन्न होते हैं।

पहले स्थिरता मॉडल में से एक लेस्ली लामपोर्ट का अनुक्रमिक स्थिरता मॉडल था। अनुक्रमिक स्थिरता एक कार्यक्रम की संपत्ति है कि इसका निष्पादन अनुक्रमिक कार्यक्रम के समान परिणाम उत्पन्न करता है। विशेष रूप से एक प्रोग्राम यदि किसी निष्पादन के परिणाम के समान हैं जैसे कि सभी प्रोसेसर के संचालन को कुछ अनुक्रमिक क्रम में निष्पादित किया गया था और प्रत्येक व्यक्तिगत प्रोसेसर के संचालन इस क्रम में उसके द्वारा निर्दिष्ट क्रम में दिखाई देते हैं।[8]


कार्यान्वयन

समवर्ती कार्यक्रमों को लागू करने के लिए कई अलग-अलग तरीकों का उपयोग किया जा सकता है जैसे प्रत्येक गणितीय निष्पादन को एक प्रक्रिया (कंप्यूटर विज्ञान) के रूप में लागू करना या गणितीय प्रक्रियाओं को धागे के एक सेट के रूप में एक संचालन प्रणाली प्रक्रिया के भीतर लागू करना होगा।

बातचीत और संचार

कुछ समवर्ती कंप्यूटिंग प्रणालियों में, समवर्ती घटकों के बीच संचार प्रोग्रामर से छिपा होता है (उदाहरण के लिए, भविष्य (प्रोग्रामिंग) का उपयोग करके), जबकि अन्य में इसे स्पष्ट रूप से नियंत्रित किया जाना चाहिए। स्पष्ट संचार को दो वर्गों में विभाजित किया जा सकता है:

साझा स्मृति संचार: समवर्ती घटक साझा मेमोरी (इंटरप्रोसेस संचार) स्थानों (जावा (प्रोग्रामिंग भाषा) और सी शार्प (प्रोग्रामिंग भाषा) द्वारा उदाहरण) की सामग्री को बदलकर संचार करते हैं। सी#)। समवर्ती प्रोग्रामिंग की इस शैली को आमतौर पर थ्रेड्स के बीच समन्वय करने के लिए लॉकिंग के कुछ रूपों (जैसे, आपसी बहिष्कार, सेमाफोर (प्रोग्रामिंग), या मॉनिटर (सिंक्रनाइज़ेशन)) के उपयोग की आवश्यकता होती है। एक प्रोग्राम जो इनमें से किसी को भी ठीक से लागू करता है, उसे थ्रेड सुरक्षा | थ्रेड-सेफ कहा जाता है।

संदेश देना कम्युनिकेशन: समवर्ती घटक संदेश पासिंग (एमपीआई खोलें, जाओ (प्रोग्रामिंग भाषा), स्काला (प्रोग्रामिंग भाषा), Erlang (प्रोग्रामिंग भाषा) और ओकैम (प्रोग्रामिंग भाषा) द्वारा उदाहरण) द्वारा संचार करते हैं। संदेशों का आदान-प्रदान अतुल्यकालिक रूप से किया जा सकता है, या एक तुल्यकालिक मिलनसार शैली का उपयोग कर सकता है जिसमें प्रेषक संदेश प्राप्त होने तक ब्लॉक करता है। अतुल्यकालिक संदेश पास करना विश्वसनीय या अविश्वसनीय हो सकता है (कभी-कभी भेजें और प्रार्थना के रूप में संदर्भित)। साझा-स्मृति संगामिति की तुलना में संदेश-पासिंग संगामिति के बारे में तर्क करना कहीं अधिक आसान होता है, और इसे आमतौर पर समवर्ती प्रोग्रामिंग का अधिक मजबूत रूप माना जाता है।[citation needed] मैसेज-पासिंग सिस्टम को समझने और उसका विश्लेषण करने के लिए विभिन्न प्रकार के गणितीय सिद्धांत उपलब्ध हैं, जिनमें अभिनेता मॉडल और विभिन्न प्रक्रिया गणना शामिल हैं। साझा मेमोरी कैश सुसंगतता के साथ या उसके बिना, संदेश पासिंग को सममित बहु प्रसंस्करण के माध्यम से कुशलतापूर्वक कार्यान्वित किया जा सकता है।

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

इतिहास

19वीं और 20वीं सदी की शुरुआत में रेलमार्ग और टेलीग्राफी पर किए गए पहले के काम से समवर्ती कंप्यूटिंग विकसित हुई, और कुछ शर्तें इस अवधि की हैं, जैसे कि सेमाफोर। ये एक ही रेल प्रणाली पर कई ट्रेनों को संभालने के तरीके (टकराव से बचने और दक्षता को अधिकतम करने) और तारों के एक सेट (दक्षता में सुधार) पर कई प्रसारणों को कैसे संभालना है, जैसे समय-विभाजन बहुसंकेतन (1870 के दशक) ).

समवर्ती एल्गोरिदम का अकादमिक अध्ययन 1960 के दशक में शुरू हुआ था Dijkstra (1965) पारस्परिक बहिष्करण की पहचान करने और हल करने वाला इस क्षेत्र का पहला पेपर होने का श्रेय।[9]


व्यापकता

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

प्रोग्रामिंग भाषा स्तर पर:

ऑपरेटिंग सिस्टम स्तर पर:

नेटवर्क स्तर पर, नेटवर्क सिस्टम आम तौर पर उनके स्वभाव से समवर्ती होते हैं, क्योंकि उनमें अलग-अलग डिवाइस होते हैं।

समवर्ती प्रोग्रामिंग का समर्थन करने वाली भाषाएं

समवर्ती प्रोग्रामिंग भाषाओं की सूची प्रोग्रामिंग भाषाएं हैं जो समवर्ती (कंप्यूटर विज्ञान) के लिए भाषा निर्माण का उपयोग करती हैं। इन निर्माणों में थ्रेड (कंप्यूटर विज्ञान) | मल्टी-थ्रेडिंग, वितरित कंप्यूटिंग के लिए समर्थन, संदेश पासिंग प्रोग्रामिंग, बंटवारे (समानांतर रैंडम एक्सेस मशीन सहित) या फ्यूचर्स और वादे शामिल हो सकते हैं। ऐसी भाषाओं को कभी-कभी समवर्ती-उन्मुख भाषाओं या संगामिति-उन्मुख प्रोग्रामिंग भाषाओं (COPL) के रूप में वर्णित किया जाता है।[10] आज, सबसे अधिक उपयोग की जाने वाली प्रोग्रामिंग लैंग्वेज जिनमें कंसीडरेंसी के लिए विशिष्ट निर्माण हैं, वे हैं जावा (प्रोग्रामिंग लैंग्वेज) और सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी#। मॉनिटर (सिंक्रनाइज़ेशन) द्वारा प्रदान की गई लॉकिंग के साथ ये दोनों भाषाएँ मौलिक रूप से एक साझा-मेमोरी समवर्ती मॉडल का उपयोग करती हैं (हालाँकि संदेश-पासिंग मॉडल अंतर्निहित साझा-मेमोरी मॉडल के शीर्ष पर लागू किए जा सकते हैं और किए जा सकते हैं)। उन भाषाओं में से जो एक संदेश-संचारी संगामिति मॉडल का उपयोग करती हैं, एरलांग (प्रोग्रामिंग भाषा) शायद वर्तमान में उद्योग में सबसे अधिक व्यापक रूप से उपयोग की जाती है।[citation needed] कई समवर्ती प्रोग्रामिंग भाषाओं को उत्पादन के उपयोग के लिए भाषाओं के बजाय अनुसंधान भाषाओं (जैसे पिक्चर (प्रोग्रामिंग भाषा)) के रूप में विकसित किया गया है। हालाँकि, पिछले 20 वर्षों में Erlang (प्रोग्रामिंग भाषा), लिम्बो (प्रोग्रामिंग भाषा), और occam (प्रोग्रामिंग भाषा) जैसी भाषाओं ने कई बार औद्योगिक उपयोग देखा है। समवर्ती प्रोग्रामिंग सुविधाओं का उपयोग करने या प्रदान करने वाली भाषाओं की गैर-विस्तृत सूची:

  • एडा (प्रोग्रामिंग लैंग्वेज) - सामान्य उद्देश्य, संदेश भेजने और मॉनिटर आधारित संगामिति के लिए मूल समर्थन के साथ
  • एलेफ (प्रोग्रामिंग लैंग्वेज) - समवर्ती, थ्रेड्स और मैसेज पासिंग के साथ, बेल लैब्स से प्लान 9 के शुरुआती संस्करणों में सिस्टम प्रोग्रामिंग भाषा लिए
  • ऐलिस (प्रोग्रामिंग लैंग्वेज) - स्टैंडर्ड एमएल का विस्तार, फ्यूचर्स के माध्यम से कंसीडर के लिए समर्थन जोड़ता है
  • Ateji PX- π-कैलकुलस से प्रेरित समानांतर प्रिमिटिव के साथ जावा (प्रोग्रामिंग लैंग्वेज) का विस्तार
  • एक्सम (प्रोग्रामिंग भाषा) - डोमेन विशिष्ट, समवर्ती, अभिनेता मॉडल पर आधारित और सी-जैसे सिंटैक्स का उपयोग करके .NET कॉमन लैंग्वेज रनटाइम
  • बीएमडीएफएम—बाइनरी मॉड्यूलर डाटाफ्लो मशीन
  • सी ++ - एसटीडी :: थ्रेड
  • सीω (सी ओमेगा)—अनुसंधान के लिए, सी# का विस्तार करता है, अतुल्यकालिक संचार का उपयोग करता है
  • सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी#—लॉक, यील्ड का उपयोग कर समवर्ती कंप्यूटिंग का समर्थन करता है, संस्करण 5.0 एसिंक्स और प्रतीक्षित कीवर्ड पेश किए जाने के बाद से भी
  • क्लोजर- जावा (सॉफ्टवेयर प्लेटफॉर्म) प्लेटफॉर्म पर लिस्प (प्रोग्रामिंग भाषा) की आधुनिक, कार्यात्मक प्रोग्रामिंग बोली
  • समवर्ती स्वच्छ- कार्यात्मक प्रोग्रामिंग, हास्केल (प्रोग्रामिंग भाषा) के समान
  • समवर्ती संग्रह (CnC) - डेटा और नियंत्रण के प्रवाह को स्पष्ट रूप से परिभाषित करके मेमोरी मॉडल से स्वतंत्र अंतर्निहित समानांतरता प्राप्त करता है
  • समवर्ती हास्केल-आलसी, शुद्ध कार्यात्मक भाषा साझा स्मृति पर समवर्ती प्रक्रियाओं का संचालन करती है
  • समवर्ती एमएल - मानक एमएल का समवर्ती विस्तार
  • समवर्ती पास्कल—पर ब्रिन्च हेन्सन द्वारा
  • करी (प्रोग्रामिंग भाषा)
  • डी (प्रोग्रामिंग भाषा) - बहु-प्रतिमान प्रोग्रामिंग भाषा | समवर्ती प्रोग्रामिंग (अभिनेता मॉडल) के लिए स्पष्ट समर्थन के साथ बहु-प्रतिमान प्रणाली प्रोग्रामिंग भाषा
  • ई (प्रोग्रामिंग भाषा) - डेडलॉक्स को रोकने के लिए वादों का उपयोग करता है
  • ECMAScript—अतुल्यकालिक संचालन के लिए वादों का उपयोग करता है
  • एफिल (प्रोग्रामिंग भाषा) - अनुबंध द्वारा डिजाइन की अवधारणाओं के आधार पर अपने स्कूप (सॉफ्टवेयर) तंत्र के माध्यम से
  • इलीक्सिर (प्रोग्रामिंग लैंग्वेज)—डायनामिक और फंक्शनल मेटा-प्रोग्रामिंग अवेयर लैंग्वेज एरलैंग वीएम पर चल रही है।
  • एरलांग (प्रोग्रामिंग भाषा) - बिना किसी साझा किए अतुल्यकालिक संदेश का उपयोग करता है
  • FAUST (प्रोग्रामिंग लैंग्वेज) - सिग्नल प्रोसेसिंग के लिए रियल-टाइम फंक्शनल, कंपाइलर OpenMP या एक विशिष्ट Cilk#Work-stealing|work-stealing शेड्यूलर के माध्यम से स्वचालित समानांतरकरण प्रदान करता है
  • फोरट्रान-कोएरे फोरट्रान और डू समवर्ती फोरट्रान 2008 मानक का हिस्सा हैं
  • गो (प्रोग्रामिंग लैंग्वेज) - सिस्टम प्रोग्रामिंग के लिए, एक समवर्ती प्रोग्रामिंग मॉडल के साथ संचार अनुक्रमिक प्रक्रियाओं पर आधारित है
  • हास्केल प्रोग्रामिंग भाषा - समवर्ती और समानांतर कार्यात्मक प्रोग्रामिंग भाषा[11]
  • ह्यूम (प्रोग्रामिंग लैंग्वेज) - सीमित स्थान और समय के वातावरण के लिए कार्यात्मक, समवर्ती, जहां ऑटोमेटा प्रक्रियाओं को सिंक्रोनस चैनल पैटर्न और संदेश पासिंग द्वारा वर्णित किया जाता है
  • Io (प्रोग्रामिंग भाषा)—अभिनेता-आधारित संगामिति
  • जानूस (समवर्ती बाधा प्रोग्रामिंग भाषा) - तार्किक चर, बैग चैनलों के लिए अलग-अलग पूछने वाले और बताने वाले; विशुद्ध रूप से घोषणात्मक है
  • जावा (प्रोग्रामिंग भाषा) - थ्रेड क्लास या रननेबल इंटरफ़ेस
  • जूलिया (प्रोग्रामिंग भाषा) - समवर्ती प्रोग्रामिंग आदिम: कार्य, async-प्रतीक्षा, चैनल।[12]
  • जावास्क्रिप्टवेब कार्यकर्ता्स के माध्यम से, एक ब्राउज़र वातावरण में, फ्यूचर्स और वादे, और कॉलबैक (कंप्यूटर प्रोग्रामिंग)
  • JoCaml- समवर्ती और वितरित चैनल आधारित, OCaml का विस्तार, प्रक्रियाओं के जोड़-कलन को लागू करता है
  • जावा से जुड़ें- समवर्ती, जावा (प्रोग्रामिंग भाषा) भाषा पर आधारित
  • जूल (प्रोग्रामिंग भाषा)—डेटा प्रवाह-आधारित, संदेश पास करके संचार करता है
  • जॉयस (प्रोग्रामिंग भाषा) - समवर्ती, शिक्षण, समवर्ती पास्कल पर निर्मित, पेर ब्रिंक हैनसेन द्वारा अनुक्रमिक प्रक्रियाओं के संचार से सुविधाओं के साथ
  • LabVIEW—ग्राफ़िकल, डेटा प्रवाह, फ़ंक्शन एक ग्राफ़ में नोड होते हैं, डेटा नोड्स के बीच तार होते हैं; वस्तु-उन्मुख भाषा शामिल है
  • लिंबो (प्रोग्रामिंग लैंग्वेज) - इन्फर्नो (ऑपरेटिंग सिस्टम) में सिस्टम प्रोग्रामिंग के लिए एलेफ (प्रोग्रामिंग लैंग्वेज) से संबंधित
  • मल्टीलिस्प—स्कीम (प्रोग्रामिंग लैंग्वेज) वेरिएंट को समानता का समर्थन करने के लिए विस्तारित किया गया
  • मॉड्यूल-2—सिस्टम प्रोग्रामिंग के लिए, एन. विर्थ द्वारा पास्कल के उत्तराधिकारी के रूप में कोरआउटिन के लिए मूल समर्थन के साथ
  • मॉड्यूल -3—अल्गोल परिवार का आधुनिक सदस्य जिसके पास थ्रेड्स, म्यूटेक्स, कंडीशन वेरिएबल्स के लिए व्यापक समर्थन है
  • न्यूज़क्वीक—अनुसंधान के लिए, प्रथम श्रेणी के मूल्यों के रूप में चैनलों के साथ; एलेफ़ के पूर्ववर्ती (प्रोग्रामिंग भाषा)
  • ओकैम (प्रोग्रामिंग लैंग्वेज) - अनुक्रमिक प्रक्रियाओं (सीएसपी) को संप्रेषित करके अत्यधिक प्रभावित
    • ओकैम-π—ओकैम (प्रोग्रामिंग लैंग्वेज) का एक आधुनिक संस्करण, जिसमें मिलनर के π-कैलकुलस के विचार शामिल हैं
  • Orc (प्रोग्रामिंग भाषा) - क्लेन बीजगणित पर आधारित भारी समवर्ती, गैर नियतात्मक
  • ओज़ (प्रोग्रामिंग भाषा) | ओज़-मोजार्ट-मल्टीपैराडाइम, साझा-स्थिति और संदेश-पासिंग संगामिति, और वायदा का समर्थन करता है
  • पैरासेल (प्रोग्रामिंग लैंग्वेज) - ऑब्जेक्ट-ओरिएंटेड, पैरेलल, फ्री ऑफ पॉइंटर्स, रेस कंडीशंस
  • पिक्चर (प्रोग्रामिंग लैंग्वेज) - अनिवार्य रूप से मिलनर के π-कैलकुलस का एक निष्पादन योग्य कार्यान्वयन
  • राकू (प्रोग्रामिंग भाषा) में डिफ़ॉल्ट रूप से थ्रेड्स, वादों और चैनलों के लिए कक्षाएं शामिल हैं[13]
  • पायथन (प्रोग्रामिंग भाषा) - थ्रेड-आधारित समानता और प्रक्रिया-आधारित समानता का उपयोग करता है [14]
  • रीया (प्रोग्रामिंग भाषा) - साझा-कुछ भी नहीं वस्तुओं के बीच अतुल्यकालिक संदेश का उपयोग करता है
  • लाल (प्रोग्रामिंग भाषा)|लाल/सिस्टम—रिबोल पर आधारित सिस्टम प्रोग्रामिंग के लिए
  • जंग (प्रोग्रामिंग भाषा) - सिस्टम प्रोग्रामिंग के लिए, मूव सिमेंटिक्स के साथ मैसेज-पासिंग का उपयोग करते हुए, साझा अपरिवर्तनीय मेमोरी और साझा म्यूटेबल मेमोरी।[15]
  • स्काला (प्रोग्रामिंग लैंग्वेज) - सामान्य उद्देश्य, सामान्य प्रोग्रामिंग पैटर्न को संक्षिप्त, सुरुचिपूर्ण और प्रकार-सुरक्षित तरीके से व्यक्त करने के लिए डिज़ाइन किया गया
  • SequenceL-सामान्य उद्देश्य कार्यात्मक, मुख्य डिजाइन उद्देश्य प्रोग्रामिंग में आसानी, कोड स्पष्टता-पठनीयता, और मल्टीकोर हार्डवेयर पर प्रदर्शन के लिए स्वत: समानांतरकरण, और दौड़ की स्थिति से मुक्त साबित होता है
  • एसआर भाषा-अनुसंधान के लिए
  • सुपरपास्कल-समवर्ती, शिक्षण के लिए, प्रति ब्रिन्च हैनसेन द्वारा समवर्ती पास्कल और जॉयस (प्रोग्रामिंग भाषा) पर निर्मित
  • स्विफ्ट (प्रोग्रामिंग भाषा) - अतुल्यकालिक और समानांतर कोड को संरचित तरीके से लिखने के लिए अंतर्निहित समर्थन[16]
  • यूनिकॉन (प्रोग्रामिंग भाषा)—अनुसंधान के लिए
  • TNSDL—दूरसंचार आदान-प्रदान विकसित करने के लिए, अतुल्यकालिक संदेश पासिंग का उपयोग करता है
  • वीएचएसआईसी हार्डवेयर विवरण भाषा (वीएचडीएल)—आईईईई एसटीडी-1076
  • XC (प्रोग्रामिंग भाषा) - XMOS द्वारा विकसित C भाषा का संगामिति-विस्तारित उपसमुच्चय, क्रमिक प्रक्रियाओं के संचार पर आधारित, प्रोग्रामयोग्य I/O के लिए अंतर्निहित निर्माण

कई अन्य भाषाएँ पुस्तकालयों के रूप में समवर्ती के लिए समर्थन प्रदान करती हैं, उपरोक्त सूची के साथ लगभग तुलनीय स्तरों पर।

यह भी देखें

टिप्पणियाँ

  1. This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor machine may be capable of some parallelism, such as with a coprocessor, but the processor alone is not.


संदर्भ

  1. Operating System Concepts 9th edition, Abraham Silberschatz. "Chapter 4: Threads"
  2. Hansen, Per Brinch, ed. (2002). The Origin of Concurrent Programming. doi:10.1007/978-1-4757-3472-0. ISBN 978-1-4419-2986-0. S2CID 44909506.
  3. 3.0 3.1 Pike, Rob (2012-01-11). "Concurrency is not Parallelism". Waza conference, 11 January 2012. Retrieved from http://talks.golang.org/2012/waza.slide (slides) and http://vimeo.com/49718712 (video).
  4. "Parallelism vs. Concurrency". Haskell Wiki.
  5. Schneider, Fred B. (1997-05-06). On Concurrent Programming. Springer. ISBN 9780387949420.
  6. 6.0 6.1 Ben-Ari, Mordechai (2006). Principles of Concurrent and Distributed Programming (2nd ed.). Addison-Wesley. ISBN 978-0-321-31283-9.
  7. Patterson & Hennessy 2013, p. 503.
  8. Lamport, Leslie (1 September 1979). "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs". IEEE Transactions on Computers. C-28 (9): 690–691. doi:10.1109/TC.1979.1675439. S2CID 5679366.
  9. "PODC Influential Paper Award: 2002", ACM Symposium on Principles of Distributed Computing, retrieved 2009-08-24
  10. Armstrong, Joe (2003). "Making reliable distributed systems in the presence of software errors" (PDF).
  11. Marlow, Simon (2013) Parallel and Concurrent Programming in Haskell : Techniques for Multicore and Multithreaded Programming ISBN 9781449335946
  12. https://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-julia Concurrent and Parallel programming in Julia
  13. "संगामिति". docs.perl6.org. Retrieved 2017-12-24.
  14. Documentation » The Python Standard Library » Concurrent Execution
  15. Blum, Ben (2012). "Typesafe Shared Mutable State". Retrieved 2012-11-14.
  16. "संगामिति". 2022. Retrieved 2022-12-15.


स्रोत

  • Patterson, David A.; Hennessy, John L. (2013). कंप्यूटर संगठन और डिजाइन: हार्डवेयर/सॉफ्टवेयर इंटरफेस. The Morgan Kaufmann Series in Computer Architecture and Design (5 ed.). Morgan Kaufmann. ISBN 978-0-12407886-4.


अग्रिम पठन


बाहरी संबंध