द्वारा समवर्ती सरणी पहुंच श्रमिकों के बीच सरणी तत्वों को सही ढंग से प्रकाशित किया गया है?निष्पादक सेवा
मान लीजिए मैं एक बड़े सरणी है (किसी भी परमाणु डेटा प्रकार का है, इसलिए नहीं long
या double
),
- मैं एक कार्यकर्ता कि सरणी है कि मैं यह है contructor के पास भरता है,
- मैं प्रस्तुत बनाने एक निष्पादक के लिए कार्यकर्ता, और पूरा होने तक प्रतीक्षा करें (उदाहरण
future.get()
के साथ)। कार्यकर्ता कुछ भी वापस नहीं करता है। यह सिर्फ मेरी सरणी भरता है। - फिर, मैं तुरंत अपने निर्माता के समान सरणी के साथ एक और कार्यकर्ता जमा करता हूं और सबमिट करता हूं। क्या यह नवीनतम मूल्य देखता है?
दूसरे शब्दों में, यह गारंटी है कि पिछले कार्यकर्ता के पहले पढ़ने से पहले पिछले कार्यकर्ता का अंतिम लेखन होता है?
क्या मुझे इसके बजाय (या सर्वोत्तम अभ्यास या कुछ के लिए) पहले कार्यकर्ता को सरणी वापस करने दें, भले ही संदर्भ मेरे जैसा पहले से ही जैसा हो?
[संपादित करें] कुछ पृष्ठभूमि: मैं byte
सरणी या short
सरणी का उपयोग करता हूं, जो छवियों का प्रतिनिधित्व करते हैं और प्रत्येक 500,000,000 तत्वों का उपयोग करते हैं। मैं प्रत्येक तत्व पर सरल अंकगणित प्रदर्शन करता हूं।
ऐसा लगता है कि आप ऐसा कुछ कर रहे हैं जो क्यूचर संरचना के साथ बेहतर काम करेगा जैसे ConcurrentLinkedQueue। –
यह एक फीफो नहीं है। दूसरे कार्यकर्ता को सरणी में यादृच्छिक पहुंच की आवश्यकता होती है। –
मुझे कुछ ट्यूटोरियल में ऐसा कुछ मिला: http://www.ibm.com/developerworks/library/j-jtp03304/jsr133.gif लेकिन मुझे यकीन नहीं है कि वैश्विक चर के मामले में इसकी व्याख्या कैसे करें। क्या सबकुछ * आंतरिक थैम में सिंक हो गया है जब थ्रेड अनलॉक हो और दूसरा ताला लगा हो? क्या निष्पादक आंतरिक रूप से इस तरह लॉक कर रहा है और न ही? –