7

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

+0

आप विभाजित ढेर चाहते हैं। जीसीसी में उन्हें, शायद एलएलवीएम भी है –

उत्तर

0

मुझे एलएलवीएम या एरलांग के साथ कोई विशिष्ट अनुभव नहीं है।

लेकिन मैंने पैरालांस नामक प्रोग्रामिंग लैंगेज में ऐसी प्रणाली लागू की है। हां, सस्ते स्विच होने के लिए संदर्भ स्विच करना मुश्किल है। इस पर

अधिक जानकारी तो जवाब: https://stackoverflow.com/a/999610/120163

क्या कम ज्ञान मैं LLVM की राशि चलता है कि यह मुश्किल हो सकता है। क्या आपको उत्पन्न करने की आवश्यकता है संदर्भ स्विचिंग कोड है। मुझे यकीन नहीं है कि एलएलवीएम सीधे का समर्थन करता है। यह निश्चित रूप से कुछ ऐसा नहीं है जो शुद्ध सी कोड उत्पन्न करते समय करना आसान है, क्योंकि भाषा प्राइमेटिव आपको मशीन/थ्रेड स्थिति में बहुत अच्छी तरह से जाने नहीं देते हैं।

वह सी ++ 14 सुविधाओं का समर्थन करने की कोशिश में क्लैंग पक्ष है, निश्चित रूप से "सी ++ देशी" धागे में ठोकर खाएगा। इसे सक्षम करने के लिए संदर्भ स्विचिंग समर्थन होना चाहिए, इसलिए हो सकता है कि किसी ने समस्या को हल किया हो या पहले से ही संबोधित किया हो।

0

एलएलवीएम इस प्रकार के सिस्टम को लागू करने के लिए सीधे प्रासंगिक नहीं है। ऐसी संरचनाओं वाली भाषाओं के लिए बहुत सी फ्रंटेंड्स हैं जो एलएलवीएम के आईआर के लिए कम हैं।

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

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

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