समवर्ती एमएल

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

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

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

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

हैलो वर्ल्ड
यहां एक प्रोग्राम है जो प्रिंट करता है "Hello, world!" कंसोल के लिए। यह स्ट्रिंग (कंप्यूटर विज्ञान) के लिए एक चैनल के साथ एक धागा (कंप्यूटर विज्ञान) पैदा करता है, और दूसरा धागा जो चैनल पर प्राप्त स्ट्रिंग को प्रिंट करता है। यह न्यू जर्सी के मानक एमएल | एसएमएल/एनजे और सीएमएल का उपयोग करता है। (ध्यान दें कि गैर linux-x86 प्लेटफॉर्म पर हीप का नाम अलग होगा; आपको cml_test.x86-linux के साथ लाइन को कुछ अलग करने की आवश्यकता हो सकती है।)

बाहरी संबंध

 * The language homepage