मैं जावा पर समवर्ती एपीआई में जाने पर कर रहा हूँ और पढ़ने-लिखने ताले की उपयोगिता समझने की कोशिश कर के बारे में क्वेरी। जावाडोक का कहना है कि एक पठनलेख ब्लॉक ताले की एक जोड़ी को बनाए रखता है, एक पढ़ने के लिए और दूसरा लेखन कार्यों के लिए। जबकि लेखन ताला एक थ्रेड द्वारा विशेष पहुंच है, कई धागे पढ़ने के ताला प्राप्त कर सकते हैं। तो अगर पढ़ने अनुभाग हम सभी कर रहे हैं संचालन पढ़ रहा है और हम वैसे भी एक से अधिक थ्रेड पहुँच प्रदान कर रहे हैं, पहली जगह में readlock की जरूरत क्या है में? क्या कोई परिदृश्य है जब रीडराइट लॉक वास्तव में उपयोगी है?पढ़ने-लिखने ताले
उत्तर
.... क्या पहली जगह
पढ़ते समय में readlock की जरूरत है, तो आप एक लेखक ताला प्राप्त करने से रोकने के लिए ... जब तक सभी पाठकों समाप्त कर दिया है की जरूरत है। लेकिन यह ताला प्राप्त करने के लिए एक और पाठक के लिए ठीक है।
लेखन करते समय, आपको एक पाठक ताला प्राप्त करने से रोकने के लिए ... जब तक लेखक समाप्त हो गया है की जरूरत है।
(दूसरे शब्दों में, वहाँ एक लेखक हो सकता है, या कई पाठकों ताले पकड़े ... लेकिन दोनों नहीं।)
इस का वर्णन करने के प्रयोजनों के लिए, यह होने के रूप में व्यवहार वर्णन के लिए सहायक है दो ताले क्या वास्तव में हुड के नीचे होता है ... कार्यान्वयन विशिष्ट है।
वहाँ एक परिदृश्य जब ReadWrite ताला वास्तव में उपयोगी है?
खैर हाँ। किसी भी परिदृश्य जहां धागे कि रीड-ओनली पहुंच साझा की आवश्यकता होती है और उन है कि विशेष पढ़ने-लिखने की (या-केवल लिखने) की आवश्यकता होती है के बीच भेद कर सकते हैं, एक ReadWrite
ताला एक सरल Lock
या एक आदिम म्युटेक्स की तुलना में अधिक संगामिति अनुमति देता है।
आप कई धागे में डेटा पढ़ रहे हैं आप दृश्यता मुद्दों की वजह से आंकड़ों के नवीनतम परिवर्तन देखने के लिए नहीं की संभावना हो। ऐसी कई परतें हैं जहां डेटा प्रति-थ्रेड आधार पर कैश किया जा सकता है: सीपीयू कैश की अलग परतें, रैम एक्सेस बफर आदि। जगह पर लॉक पढ़ना है, आप सुनिश्चित हो सकते हैं कि आप हमेशा नवीनतम स्थिति देख रहे हैं।
लिखें ताले नवीनतम परिवर्तनों की दृश्यता के साथ पहुंच का एक atomicity उपलब्ध कराने और मज़बूत कर रहे हैं।
मुख्य कारण यहां ताले के विभिन्न प्रकार के लिए अन्य थ्रेड के लिए बहुत अधिक भूमि के ऊपर और ताले को शुरू करने के बिना तुल्यकालन के लिए पर्याप्त स्तर प्राप्त करने की क्षमता है।
क्या कोई परिदृश्य है जब रीडराइट लॉक वास्तव में उपयोगी होता है?
आप कुछ में स्मृति डेटा (सरणी, संग्रह या जो कुछ भी) है, जो अलग अलग धागे से एक बहुत क्वेरी की जाती है, लेकिन इस डेटा के अद्यतन काफी कम ही होता है जब यह बेहद उपयोगी है। इस मामले अलग ताले होने में (प्रश्नों के लिए ताला पढ़ सकते हैं और अद्यतन के लिए ताला बारे में) आप एक महत्वपूर्ण प्रदर्शन को लाभ दे सकता है।
केवल पढ़ने के लिए लॉक होने का कारण यह है कि अगर किसी अन्य धागे के पास लेखन के लिए एक ऑब्जेक्ट लॉक होता है, तो उस ऑब्जेक्ट की स्थिति असंगत हो सकती है, और इसलिए आप इसे लॉक के साथ पढ़ना शुरू नहीं करना चाहते हैं। एक रीड लॉक प्राप्त करने से यह सुनिश्चित होता है कि (1) ऑब्जेक्ट एक स्थिर स्थिति में है, जबकि आप इसे देख रहे हैं क्योंकि कोई अन्य थ्रेड इसे संशोधित नहीं कर रहा है और (2) कोई अन्य धागा शुरू कर रहा है जब तक आप इसे देख रहे हों यह। हमारे पास एक अलग प्रकार के रूप में रीड लॉक है क्योंकि यदि बहुत सारे धागे पढ़ने के लिए सामान्य है लेकिन कुछ अपडेट हैं, तो पाठक सभी एक ही समय पर देख सकते हैं।
- 1. स्पष्ट ताले बनाम लागू ताले
- 2. पठ्रेड में लागू ताले पढ़ने/लिखने वाले ताले कैसे हैं?
- 3. एसक्यूएल सर्वर ताले समझा
- 4. MySQL एकाधिक तालिका ताले
- 5. System.Reflection.Assembly.LoadFile ताले फ़ाइल
- 6. पायथन मल्टीप्रोसेसिंग ताले
- 7. रेंज-ताले क्या हैं?
- 8. Async कार्य और ताले
- 9. INNER JOIN और ताले
- 10. म्यूटेक्स और ताले
- 11. ताले (जेपीए) से कैसे निपटें?
- 12. कई म्यूटेक्स ताले का उपयोग
- 13. ConcurrentHashMap ताले पढ़ने और लिखने
- 14. Wix HeatFile टास्क ताले Dll
- 15. जावा में पदानुक्रमित म्यूटेक्स ताले
- 16. ताले के साथ स्टेटमेंट रीडरिंग
- 17. pthreads: पाठक/लेखक ताले, लॉक
- 18. जावा ताले: सिंक्रनाइज़ ब्लॉक में मॉनिटर ताले के लिए समानता जांच कैसे की जाती है?
- 19. म्यूटेक्स ताले बनाम थ्रेडिंग ताले बनाम। किस का उपयोग करना है?
- 20. mysql - ताले प्रतिकृति पर प्रचार करते हैं?
- 21. ताले यहां क्यों उपयोग किए जाते हैं?
- 22. UIImagePickerController संपादन अनुमति ताले UIImage की 320x320
- 23. पंक्ति ताले - मैन्युअल रूप से उनका उपयोग
- 24. स्क्रॉलटॉप एनीमेशन के बाद स्क्रॉलिंग/स्क्रॉलबार ताले
- 25. पोस्टग्रेज़ में सलाहकार ताले प्राप्त करना
- 26. संभावित पोस्टग्रेस पंक्ति ताले कैसे जारी करें?
- 27. सेमीफार्स, ताले और स्थिति चर लागू करने
- 28. क्या एकाधिक वेक ताले पकड़ना संभव है?
- 29. स्लाइडिंग मेनू ताले स्पर्श दृश्य ऊपरी दृश्य
- 30. मल्टीथ्रेडेड संसाधन पहुंच - मैं अपनी ताले कहां रखूं?
आपको एक रीड लॉक की आवश्यकता है जो थ्रेड को लॉक रखने पर रोक देगा। –