2012-08-06 8 views
60

विकिपीडिया के अनुसार,एक विशेष लॉक और साझा लॉक के बीच क्या अंतर है?

साझा ताले कभी कभी कहा जाता है "ताले पढ़ें" और अनन्य ताले कभी-कभी "ताले लिखने" कहा जाता है।

क्या आप "साझा" और "अनन्य" शब्दों के पीछे तर्क को समझा सकते हैं?

उत्तर

254

मैं नीचे इस जवाब लिखा क्योंकि मुझे लगा कि यह एक मजेदार (और फिटिंग) सादृश्य होगा:

एक ब्लैकबोर्ड के रूप में एक ताला-युक्त वस्तु की Think (लॉक करने योग्य) शिक्षक (लेखक) और कई छात्रों (पाठक) वाले कक्षा कक्ष में।

एक शिक्षक बोर्ड पर कुछ (विशेष लॉक) लिख रहा है जबकि:

  1. कोई नहीं है, यह पढ़ सकते हैं, क्योंकि यह अभी भी लिखा जा रहा है, और वह आपके विचार =>अवरोधित कर रही है एक वस्तु विशेष रूप से लॉक हो जाता है , साझा ताले प्राप्त नहीं किया जा सकता है।

  2. अन्य शिक्षक नहीं आ जाएगा और या तो लेखन शुरू, या बोर्ड अपठनीय हो जाता है, और छात्रों =>एक वस्तु विशेष रूप से बंद कर दिया जाता है, तो अन्य विशेष ताले प्राप्त नहीं किया जा सकता है confuses।

छात्रों (साझा ताले) क्या बोर्ड पर है पढ़ रहे हैं जब:

  1. वे सब पढ़ सकते हैं क्या उस पर है, एक साथ =>एकाधिक साझा ताले सह-अस्तित्व कर सकते हैं ।

  2. शिक्षक इंतजार कर रहा है उन्हें इससे पहले कि वह बोर्ड लिखने के लिए साफ करता है पढ़ने समाप्त करने के लिए के लिए और अधिक =>एक या अधिक साझा ताले पहले से ही मौजूद हैं, विशेष ताले प्राप्त नहीं किया जा सकता है।

+5

अमूर्तता को बहुत बारीकी से कैप्चर करने वाले महान समानता (गैर-अधिक खींचने वाले समानता दुर्लभ हैं!)। धन्यवाद! –

+1

बहुत अच्छी व्याख्या। हालांकि पीओ ने "साझा" और "अनन्य" संप्रदायों के * मूल * को झुकाया, न कि प्रति थर्मों की व्याख्या के लिए। – serhio

+7

अर्जुनशंकर की तरह लोग किताबें क्यों नहीं लिखते? बहुत ही रोचक और समझदार स्पष्टीकरण। – user3388473

15

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

तो एक पठन लॉक कहता है, "अब आप पढ़ सकते हैं लेकिन यदि आप लिखना चाहते हैं तो आपको प्रतीक्षा करनी होगी" जबकि एक लिखने का ताला कहता है "आपको इंतजार करना होगा"।


मुझे पता है आप अपनी पढ़ाई के समर्थन में शोध कर रहे हैं, लेकिन मैं व्याख्यान के लोभ पर काबू नहीं कर सकते।

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

मैंने वास्तव में यह किया है। यह एक अत्याचारी डिजाइन है, जो मुक्केबाजी का कारण बनता है और सत्र राज्य में हर अंतिम बदलाव के लिए एक संग्रह में परिवर्तन करता है, जो एक लंबे समय तक लिखने वाले लॉक में शामिल होता है। ओवरहेड अपंग थे, सर्वर को एकल थ्रेडेड व्यवहार में प्रभावी ढंग से कम कर रहे थे।

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

अन्य आम ताला परिदृश्य का एक पहलू संसाधनों एक उपयोगकर्ता आवेदन के धागे के बीच साझा किया जाता है की वृद्धि हुई। अधिकांश आधुनिक ढांचे ताले के बजाए संदेशों का उपयोग करके इसे संबोधित करते हैं; जब आप "यूआई थ्रेड में संक्रमण" करते हैं तो आप वास्तव में एक फ़ंक्शन पॉइंटर और कुछ पैरामीटर (या एक प्रतिनिधि और कार्यान्वयन के आधार पर एक स्टैक फ्रेम) वाले संदेश को क्यूइंग कर रहे हैं।

2
  • एक विशेष या लिखने वाला लॉक फ़ाइल के निर्दिष्ट भाग को लिखने के लिए एक प्रक्रिया को विशेष पहुंच प्रदान करता है। जबकि एक लेखन लॉक जगह पर है, कोई अन्य प्रक्रिया फ़ाइल के उस हिस्से को लॉक कर सकती है।

  • एक साझा या पढ़ा हुआ लॉक फ़ाइल के निर्दिष्ट भाग पर एक लिखित लॉक का अनुरोध करने से किसी भी अन्य प्रक्रिया को प्रतिबंधित करता है। हालांकि, अन्य प्रक्रियाएं पढ़ने वाले ताले का अनुरोध कर सकती हैं।

अधिक उस पर: http://www.gnu.org/software/libc/manual/html_node/File-Locks.html

0

सिद्धांत भी डेटाबेस पक्ष पर समान है। ओरेकल दस्तावेज के अनुसार

विशिष्ट लॉक मोड संबंधित संसाधन को साझा होने से रोकता है। डेटा को संशोधित करने के लिए यह लॉक मोड प्राप्त किया जाता है। संसाधन को लॉक करने वाला पहला लेनदेन विशेष रूप से एकमात्र लेनदेन है जो संसाधन को तब तक बदल सकता है जब तक कि विशेष लॉक जारी नहीं किया जाता है।

साझा लॉक मोड शामिल संसाधनों को साझा करने के लिए संबंधित संसाधन को साझा करने की अनुमति देता है। डेटा पढ़ने वाले एकाधिक उपयोगकर्ता डेटा साझा कर सकते हैं, एक लेखक द्वारा समवर्ती पहुंच को रोकने के लिए शेयर लॉक धारण कर सकते हैं (जिन्हें एक विशेष लॉक की आवश्यकता होती है)। कई लेन-देन
उसी संसाधन पर शेयर लॉक प्राप्त कर सकते हैं।

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

  • कोई संबंधित समस्या नहीं^_^