2010-03-13 9 views
11

अभिनेताओं को इतना हल्का बनाता है?स्कैला: अभिनेता हल्के क्यों हैं?

मुझे यह भी सुनिश्चित नहीं है कि वे कैसे काम करते हैं। क्या वे अलग धागे नहीं हैं?

+0

मैं इस प्रश्न को जोड़ना चाहता हूं: स्कैला अभिनेता कितने हल्के हैं? – ziggystar

+0

@ziggystar जो मैं समझता हूं उससे, अभिनेता केवल ऑब्जेक्ट-स्तरीय कार्य हैं।मैं अनुमान लगा रहा हूं कि "हल्का वजन" ज्यादातर अपने "मेलबॉक्स" के आकार पर निर्भर करता है। – someguy

उत्तर

17

जब वे हल्के वजन कहते हैं तो उनका मतलब है कि प्रत्येक अभिनेता को एक धागे में मैप नहीं किया जाता है।

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

Source

+0

यदि कोई अपवाद फेंक दिया जाता है, तो केवल अभिनेता (और अंडरलेइंग थ्रेड नहीं) सही मर जाएगा? – someguy

+0

@ सोमेगुय - मुझे लगता है कि यह वास्तव में थ्रेड पूल के कार्यान्वयन पर निर्भर करता है लेकिन हां। – ChaosPandion

0

महत्वपूर्ण संदर्भ Actors that Unify Threads and Events

मुझे नहीं लगता कि हम को मजबूत करना चाहिए कि अभिनेता कि हल्के है।

पहले थ्रेड आधारित अभिनेता प्रति थ्रेड अभिनेता हैं इसलिए हल्के वजन नहीं।

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

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