2012-04-15 7 views
8

यह प्रश्न Should my Scala actors' properties be marked @volatile? जैसा दिखता है लेकिन यह सुनिश्चित नहीं है कि उत्तर वही होगा।क्या मेरे अक्का अभिनेताओं के गुणों को @ वोलाटाइल चिह्नित किया जाना चाहिए?

उदाहरण के तौर पर, जब फोर्क-इन डिस्पैचर कॉन्फ़िगर किया गया था और अभिनेता का राज्य @ वोलाटाइल द्वारा चिह्नित नहीं किया गया था, तो यह गारंटी है कि अभिनेता की स्थिति को एक कोर (या प्रोसेसर) से कैश पदानुक्रम के माध्यम से प्रचारित किया जाएगा। एक और अगर फोर्क/वर्कर थ्रेड अलग-अलग कोर (या प्रोसेसर) पर चलते हैं?

पीएस क्या यह सही है कि जेएसआर 133 के बाद किसी भी अस्थिर चर से केवल एक ही लिखना/पढ़ना ऑपरेशन, कैश को मुख्य मेमोरी में फ्लश करने के लिए आवश्यक है और अन्य थ्रेड (या प्रोसेसर) पर चल रहे अन्य थ्रेड पर इस थ्रेड से सभी पूर्व-अस्थिर लेखन को देखें? यदि हां, तो इसका जवाब हो सकता है, क्योंकि कार्य कतार स्कैनिंग कुछ रीडिंग और एफजे कार्य के अस्थिर चर से/लिखने के लिए लिखती है।

उत्तर

4

नहीं, आपको अपने अभिनेता क्षेत्रों पर अस्थिर नहीं रखना चाहिए। क्यूं कर?

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

सब कुछ यहीं है: http://doc.akka.io/docs/akka/2.0/general/jmm.html

अपने पी एस के बारे में, आप क्या होता है-पहले गारंटी प्राप्त करने के लिए एक ही अस्थिर क्षेत्र के लिए पढ़ने/लिखने की जरूरत है। "अस्थिर पिगबैकिंग" पर पढ़ें

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