हां, आपके आवेदन में अन्य निष्पादन संदर्भों का निर्माण और उपयोग करना निश्चित रूप से एक अच्छा विचार है।
निष्पादन संदर्भ आपके समवर्ती मॉडल को मॉड्यूलरेट करेंगे और आपके एप्लिकेशन के विभिन्न हिस्सों को अलग करेंगे, ताकि यदि आपके ऐप के किसी हिस्से में कुछ गलत हो जाए, तो अन्य हिस्सों से इससे कम प्रभावित होगा। अपने उदाहरण पर विचार करने के लिए, आपके पास डीबी-विशिष्ट संचालन के लिए एक अलग निष्पादन संदर्भ होगा और दूसरा अनुरोध, वेब अनुरोधों की प्रसंस्करण के लिए होगा।
this presentation जोनास बोनर द्वारा इस पैटर्न को अधिक स्थिरता & गलती सहनशीलता के लिए आपके आवेदन में "बल्कहेड" बनाने के रूप में जाना जाता है।
मुझे स्वीकार करना होगा कि मैंने निष्पादन संदर्भ उपयोग के बारे में बहुत कुछ नहीं सुना है। हालांकि, मैं इस सिद्धांत को कुछ ढांचे में लागू करता हूं। उदाहरण के लिए, खेलने के नौकरियों के विभिन्न प्रकार के लिए अलग निष्पादन संदर्भों का उपयोग करेगा और वे अलग अलग पूल में अपने कार्यों को विभाजित करने के लिए प्रोत्साहित करते हैं यदि आवश्यक हो: Play Thread Pools
अक्का मिडलवेयर भी अलग संगामिति क्षेत्रों के लिए विभिन्न संदर्भों में अपने एप्लिकेशन बंटवारे का सुझाव आपका आवेदन। वे Dispatcher की अवधारणा का उपयोग करते हैं जो बैटरी पर निष्पादन संदर्भ है।
इसके अलावा, स्कैला समवर्ती पुस्तकालय में अधिकांश ऑपरेटरों को निष्पादन संदर्भ की आवश्यकता होती है। यह डिज़ाइन द्वारा आपको लचीलापन देने के लिए आवश्यक है जब आपको अपने आवेदन को समेकित करने में आवश्यकता होती है।
स्रोत
2013-05-30 11:32:03
+1 यह उल्लेख करने के लिए कि महत्वपूर्ण निर्णय कारक यह है कि आप वायदा में अवरुद्ध (या लंबे समय तक चलने वाले) कोड का उपयोग करते हैं या नहीं। यदि आप नहीं करते हैं, अलग निष्पादन संदर्भों का उपयोग वास्तव में उत्पादक काउंटर है। –
यदि आप एक कस्टम एक्जिक्यूटर चाहते हैं तो आप नियंत्रण कर सकते हैं लेकिन डिफ़ॉल्ट समांतरता और अन्य पैरामीटर के साथ चिपकना चाहते हैं, ऐसा लगता है कि 'निष्पादनकॉन्टेक्स्ट.फॉमएक्सएटर (नया scala.concurrent.forkjoin.ForkJoinPool) '(पैरामीटर के बिना) चाल चल रहा है ; 8 कोर (सहित हाइपरथ्रेडिंग) के साथ मेरे i7 पर 8 का पूल बनाता है, जो 'फोर्कजोइनपूल' से मेल खाता है।CommonPool' शामिल है। –
@cmbaxter क्या आप अपने जेडीबीसी कॉल को वायदा के अंदर 'अवरुद्ध {}' में लपेटते हैं? यदि एक अलग निष्पादन कॉन्टेक्स्ट है तो क्या यह आवश्यक है? –