32

Actor Model का उपयोग कब किया जाना चाहिए?किसी को अभिनेता मॉडल का उपयोग कब करना चाहिए?

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

अभिनेता जबकि बी ए के लिए इंतजार कर रहा है

इसके अलावा, एक अभिनेता यकीन है कि अपने संदेश अपने अगले काम पर जाने से पहले संसाधित किया गया था बनाने के लिए है, तो एक बी से एक संदेश के लिए इंतजार कर सकते हैं, यह एक भेजनी होगी संदेश और सीधा अवरुद्ध करने के बजाय "आपका संदेश संसाधित किया गया" संदेश का इंतजार करें।

मॉडल की शक्ति क्या है?

उत्तर

20

कुछ समेकन समस्या को देखते हुए, आप यह तय करने के लिए क्या देखेंगे कि अभिनेताओं का उपयोग करना है या नहीं?

सबसे पहले मैं समस्या को परिभाषित करना चाहता हूं ... क्या प्राथमिक प्रेरणा लूप या रिकर्सन के लिए नेस्टेड की गति है? यदि ऐसा है तो एक साधारण कार्य आधारित दृष्टिकोण या समांतर लूप दृष्टिकोण आपके लिए (अभिनेताओं के बजाए) अच्छी तरह से काम करेगा।

हालांकि यदि आपके पास एक जटिल प्रणाली है जिसमें निर्भरता शामिल है और साझा राज्य समन्वयित है, तो एक अभिनेता दृष्टिकोण मदद कर सकता है। विशेष रूप से कलाकारों और संदेश से गुजरने वाले संदेश के उपयोग के माध्यम से आप अक्सर उस राज्य (संदेश) की प्रतियां बनाकर और उन्हें प्रतिक्रिया देकर साझा राज्य की सुरक्षा के लिए स्पष्ट ताले का उपयोग करने से बच सकते हैं।

आप क्लासिक सिंक्रनाइज़ेशन समस्याओं जैसे डाइनिंग दार्शनिकों और नींद की समस्या की समस्या के साथ इसे आसानी से कर सकते हैं। लेकिन आप अधिक आधुनिक पैटर्न के साथ मदद करने के लिए 'अभिनेता' का भी उपयोग कर सकते हैं, यानी आपका मुखौटा एक अभिनेता हो सकता है, आपका मॉडल व्यू और कंट्रोलर भी ऐसे अभिनेता हो सकता है जो एक-दूसरे के साथ संवाद कर सकें।

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

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

-रिक

15

अभिनेता के उपयोग "प्राकृतिक" कम से कम दो मामलों में है:

  1. जब आप स्वतंत्र कार्यों का एक सेट में अपनी समस्या विघटित कर सकते हैं।
  2. जब आप एक स्पष्ट वर्फ्लो (यानी dataflow programming) से जुड़े कार्यों के एक सेट में अपनी समस्या का विघटन कर सकते हैं।

उदाहरण के लिए, यदि आप फिल्टर की एक श्रृंखला का उपयोग कर जटिल डेटा की प्रक्रिया, यह आसान अभिनेताओं में से एक पाइप लाइन जहां प्रत्येक अभिनेता एक नीचे की ओर अभिनेता के लिए एक नदी के ऊपर अभिनेता और सेट डेटा से डेटा प्राप्त उपयोग करने के लिए है।

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

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

+4

अपने बिंदु में जोड़ने के लिए, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदों में से एक डेटा और संबंधित कार्यों का समापन है। हालांकि, किसी को भी किसी भी तरीके से कॉल करके किसी ऑब्जेक्ट को "जीवन देना" की आवश्यकता होती है। हमारे पास वस्तुओं और प्रक्रियाओं का एक अलग दृश्य है। दूसरी ओर अभिनेता अपने अधिकार में प्रक्रियाएं हैं। इससे उन्हें वास्तविक दुनिया से जोड़ना आसान हो जाता है। – tilish

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