2009-07-16 15 views
7

पता पुस्तिका प्रलेखन से मेरी समझ और अंतर्निहित कोरडाटा कार्यान्वयन की मेरी समझ से पता चलता है कि पता पुस्तिका थ्रेड सुरक्षित होनी चाहिए, और एकाधिक धागे से प्रश्न बनाने से कोई समस्या नहीं होनी चाहिए। लेकिन मुझे दस्तावेज़ों में थ्रेड सुरक्षा की कोई स्पष्ट चर्चा खोजने में परेशानी हो रही है। इससे कुछ प्रश्न उठते हैं:पता पुस्तिका थ्रेड सुरक्षा और प्रदर्शन

  • क्या केवल पढ़ने के लिए उपयोग के लिए एकाधिक थ्रेड पर + साझा एड्रेसबुक का उपयोग करना सुरक्षित है? मेरा मानना ​​है कि जवाब हाँ है।
  • पृष्ठभूमि धागे पर लेखन-पहुंच के लिए, ऐसा लगता है कि आपको इसके बजाय + एड्रेसबुक का उपयोग करना चाहिए (और मैन्युअल रूप से अपने परिवर्तनों को सहेजना चाहिए)। क्या मैं इसे सही ढंग से समझता हूं?
  • क्या किसी ने एकाधिक धागे पर पता पुस्तिका में एकाधिक एक साथ प्रश्न बनाने के प्रदर्शन प्रभाव की जांच की है? यह एकाधिक धागे पर एकाधिक कोरडाटा क्वेरी बनाने के प्रदर्शन के समान होना चाहिए। मेरी समझ यह है कि मैं समानांतर प्रश्न बनाकर थोड़ा सा लाभ प्राप्त करूंगा क्योंकि मुझे लगता है कि जब वे SQLLite हिट करते हैं तो वे क्रमबद्ध होंगे, लेकिन मैं यहां निश्चित नहीं हूं।

मुझे एड्रेसबुक के खिलाफ दर्जनों प्रश्न (कुछ जटिल) बनाने की आवश्यकता है और यूआई को अवरुद्ध करने से बचने के लिए NSOperation का उपयोग करके पृष्ठभूमि थ्रेड पर ऐसा कर रहा हूं (जो वर्तमान में यह करता है)। मेरा अंतर्निहित प्रश्न यह है कि अधिकतम समवर्ती संचालन को 1 से बड़े मान पर सेट करना समझ में आता है, और क्या ऐसा करने में कोई खतरा है यदि एप्लिकेशन किसी अन्य थ्रेड पर एक ही समय में एड्रेसबुक पर भी लिख रहा हो।

+0

कि पता पुस्तिका फ्रेमवर्क वर्तमान में (यह हमेशा मामला नहीं रहा है) कोर डेटा का उपयोग एक कार्यान्वयन विवरण है जिसे आपको अनदेखा करना चाहिए, और यह आवश्यक रूप से थ्रेड-सुरक्षा की गारंटी नहीं देता है। क्या आप दस्तावेज के लिए एक लिंक प्रदान कर सकते हैं जो कहता है कि पता पुस्तिका API थ्रेड सुरक्षित है? मैं प्रलेखन में बताई गई थ्रेडिंग नीति को खोजने में असमर्थ था। –

+0

मैं इसे खोजने में असमर्थ हूं। यही वह बिंदु है जो मैं पहले पैराग्राफ में बना रहा था। मुझे किसी भी दस्तावेज़ में एबी के साथ थ्रेडिंग की कोई स्पष्ट चर्चा नहीं मिल रही है। लेकिन यह मानते हुए कि यह थ्रेड सुरक्षित नहीं है, वह जटिल जटिलता पैदा करता है जिसकी संभावना नहीं है (और मुझे उचित रूप से कार्यान्वित करने के तरीके पर दस्तावेज़ीकरण नहीं मिल रहा है), इस प्रकार सवाल उठा रहा है। –

+3

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

उत्तर

7

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

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

इसका मतलब है कि साझा एड्रेसबुक थ्रेड सुरक्षित नहीं होगा अगर यह उपयोग करने के लिए आसपास एक NSManagedObjectContext रखता है। यह केवल तब सुरक्षित होगा यदि एबी हर बार एक नया संदर्भ बनाता है जब उसे कुछ करने की आवश्यकता होती है और तुरंत इसका निपटान किया जाता है, या यदि यह प्रति थ्रेड संदर्भ बनाता है और हमेशा उपयुक्त संदर्भ का उपयोग करता है (शायद थ्रेड डिक्शनरी में इसे रेफरी करके) । किसी भी घटना में एनएसएएनएजेडऑब्जेक्ट्स के रूप में कुछ भी स्टोर करना सुरक्षित नहीं होगा क्योंकि संदर्भ लगातार नष्ट हो जाएंगे, जिसका अर्थ है कि प्रत्येक एबीआरकॉर्ड को एनएसएमएनेज्ड ऑब्जेक्टिड स्टोर करना होगा ताकि जब भी इसकी आवश्यकता हो, उचित वस्तु में ऑब्जेक्ट का पुनर्गठन कर सके।

स्पष्ट रूप से यह सब संभव है, यह हो सकता है, लेकिन यह शायद ही स्पष्ट कार्यान्वयन है।

+1

मुझे पता है कोरडाटा के साथ थ्रेड/संदर्भ मुद्दे, यही कारण है कि मैं + एड्रेसबुक विधि के अस्तित्व को इंगित करता हूं। यदि यह एक अलग संदर्भ प्रदान नहीं करता है, तो यह किस उद्देश्य का उद्देश्य प्रदान करता है? (माना जाता है कि अन्य ने एक ही सवाल पूछा है क्योंकि यह अस्पष्ट है डॉक्स कैसे + साझा एड्रेसबुक और + एड्रेसबुक भिन्न होते हैं।) थ्रेड-सुरक्षा की कमी, कोई लॉकिंग तंत्र नहीं, मुख्य थ्रेड की आवश्यकता है या ऑपरेशन की अत्यधिक धीमी गति से कोई मार्गदर्शन नहीं है, मूल प्रश्न अभी भी बाहर है: सही ढंग से अत्यधिक उत्तरदायी कैसे लिखना है ऐसे ऐप्स जिन्हें कई एबी प्रश्नों की आवश्यकता होती है। रडार समय ... –

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