6

तो मैं जूलिया में एक सरणी ऑपरेशन को अनुकूलित करने का प्रयास कर रहा था, लेकिन ध्यान दिया कि मुझे कभी-कभी मेरे मैट्रिक्स पर बड़ी त्रुटि मिल रही थी। मैंने यह भी देखा कि जूलिया में एक साझाएरे के समान सूचकांक को समवर्ती रूप से लिखने की संभावना मौजूद थी। मैं सोच रहा था कि जूलिया सुरक्षित रूप से इसे संभाल सकता है या नहीं। यदि नहीं, तो मैं इसे कैसे संभालने में सक्षम हो सकता हूं?क्या साझा Arrays जूलिया में सुरक्षित रूप से लिखते हैं समेकित संभाल सकते हैं?

यहाँ मेरी मुद्दा

for a list of arbitrary x,y indexes in array J 
    j[x,y] += some_value 
end 

जूलिया इस मामले को संभाल कर सकते हैं या, सी की तरह, डेटा को अधिलेखित करने की संभावना उपलब्ध नहीं होगा की एक बुनियादी उदाहरण है। जूलिया में उनके परमाणु संचालन इस के लिए क्षतिपूर्ति करने के लिए हैं?

उत्तर

4

साझा सरणी जानबूझकर लॉकिंग नहीं है, क्योंकि लॉकिंग महंगा हो सकती है। सबसे आसान तरीका विभिन्न प्रक्रियाओं में गैर-ओवरलैपिंग कार्य असाइन करना है। हालांकि, जैसा कि आप देख किसी को एक ताला पुस्तकालय लिखा है, या उस पर एक जाना है करने के लिए अपने आप को खोज सकते हैं: https://en.wikipedia.org/wiki/Mutual_exclusion

+0

जाहिर जूलिया लॉक करने के लिए समर्थन करता है। यह बेस पैकेज का हिस्सा है: https://stackoverflow.com/questions/33778907/how-to-use-lock-in-julia। – Skylion

+1

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

+0

इस जानकारी को देखते हुए, आप तब क्या सुझाव देंगे? मुझे लगता है कि अगर मैं जूलिया 0.5 जारी होने तक प्रतीक्षा करता हूं तो हम पीटीएचड के लिए समर्थन जोड़ सकते हैं और परमाणुओं का उपयोग नहीं कर सकते हैं जब तक कि आपके मन में अधिक सुंदर समाधान न हो? आदर्श रूप से, यह अच्छा होगा अगर कोड एक वितरित सिस्टम पर चलाया जा सके, लेकिन आवश्यकता नहीं है। – Skylion

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