Parallel Linq जैसे सिस्टम का उपयोग करना, एक ही मशीन के भीतर एकाधिक कोर और धागे में अज्ञात कार्यों, प्रश्नों आदि के निष्पादन को विभाजित करना संभव है। मुझे मानक भाषा संरचनाओं जैसे कि लूप (जैसे Parallel.For()
), int
एस, struct
एस आदि जैसे मूल्य प्रकारों का उपयोग करके कई मशीनों में चलाने के लिए इसे विस्तारित करने की क्षमता चाहिए, और एप्लिकेशन स्रोत संशोधन को न्यूनतम में रखें। आदर्श रूप से, यह मुझे एक परियोजना खोलने, एक विधि में एक विशेषता जोड़ने, और उन्नत कार्यक्षमता तक पहुंच प्राप्त करने के लिए पुन: संकलित करने की अनुमति देगा।सी # भाषा एक्सटेंशन कार्यान्वित करना
ऐसा लगता है कि मैं की तर्ज पर कुछ आवश्यकता होगी: (जैसे कि एक लैम्ब्डा के रूप में)
क्षमता कोड का एक संकलित ब्लॉक कब्जा करने के लिए और यह एक कार्यकर्ता एक और नोड पर चल प्रक्रिया को पारित , आवश्यक किसी भी डेटा के साथ, या
एक प्रीप्रोसेसर प्रदान करें जो प्रश्न में कोड को कैप्चर करेगा, इसे एक प्रकार के टेम्पलेट प्रोजेक्ट में संकलित करेगा जो वैरिएबल संदर्भों को प्रतिस्थापित करेगा, आदि को संभालने वाली कक्षा के संदर्भों के साथ नेटवर्क संचार, कैशिंग और किसी अन्य आवश्यक संपत्ति तक पहुंच, और परिणामी डीएलएल को किसी भी availa को भेजें ब्ली वर्कर नोड्स अन्य मशीनों पर चल रहा है।
Roslyn कुछ उपकरण प्रदान करने के लिए प्रतीत होता है जो यहां उपयोगी होंगे। इस अनुमति के लिए वर्तमान संकलन पाइपलाइन में हुक करने का कोई तरीका है?
संपादित
ठीक है, मैं जानता हूँ कि यह संभव है, because these guys did it। सवाल है, कैसे?
ठीक है, closers - यह वास्तव में भी स्थानीयकृत कैसे है? –
क्योंकि आप यहां एकमात्र व्यक्ति होना चाहिए जो ओपनसीएल कर्नेल बनाने के लिए सी # भाषा एक्सटेंशन को कार्यान्वित करना चाहता है। –
ठीक है, ओपनसीएल भाग के बारे में भूल जाओ। हेटरोजेनस प्लेटफार्मों में निष्पादन को वितरित करने के लिए कोड जनरेशन को अनुकूलित करने के लिए आप संकलन चरण में हुकिंग के बारे में कैसे जाएंगे? यह शायद मुझे और अधिक स्पष्ट लगता है। और जब से हम विशिष्ट अनुप्रयोगों के बारे में सवाल कब बंद करते हैं ?! –