7

का उपयोग करने के वास्तविक डाउनसाइड्स क्या हैं। हमने परियोजना को लक्षित किया है .NET 2.0 RTM (हाँ, यह .NET 2.0 RTM होना चाहिए, हमारे पास कुछ रूढ़िवादी ग्राहक हैं)। और मैं बस सोच रहा हूं कि ReaderWriterLock के डाउनसाइड्स क्या हैं? यह इतना बुरा क्यों है कि हर कोई "इसका उपयोग न करें, lock कथन जैसे कुछ और उपयोग करने का प्रयास करें"? अगर हम .NET 3.5 का उपयोग कर सकते हैं, तो मैं निश्चित रूप से ReaderWriterLockSlim का उपयोग करता हूं, लेकिन ReaderWriterLock के साथ मैं इन सभी चेतावनियों के साथ हर जगह से थोड़ा डरावना हूं। क्या किसी ने प्रदर्शन किया है या जो कुछ भी? यदि कुछ प्रदर्शन समस्याएं हैं, तो हम किस पेलोड के तहत सामना कर सकते हैं?रीडरवाइटर लॉक

हमारे पास ReaderWriterLock मुख्य उद्देश्य के संदर्भ में क्लासिक स्थिति है, यानी कई पढ़ते हैं और शायद ही कभी लिखते हैं। lock कथन का उपयोग सभी पाठकों को अवरुद्ध करेगा। शायद यह हमारे लिए एक भयानक मुद्दा नहीं है, लेकिन अगर मैं ReaderWriterLock का उपयोग कर सकता हूं तो मैं अधिक संतुष्ट होगा। कई मॉनीटर पेश करने वाले आईएमओ वास्तव में एक बहुत ही बुरा विचार है।

उत्तर

7

निम्नलिखित कुछ पोस्ट आपको वे विचार प्रदान कर सकते हैं जिन्हें आप ढूंढ रहे हैं।

Performance Comparison of ReaderWriterLockSlim with ReaderWriterLock

Rico Mariani on Using ReaderWriterLock part इस पोस्ट लागत और परिदृश्यों में से कुछ ReaderWriterLock उपयोग करने के लिए, यह भी जाँच part 1 और part 2

Jeffrey Richter on an alternative to ReaderWriterLock

1

तुम सच में ReaderWriterLock के लिए आदर्श उपयोग के मामले का सामना कर रहे हैं बताते हैं (यानी कई समवर्ती पढ़ता है और कुछ लिखते हैं) फिर इसका इस्तेमाल करें!

यदि आपको लगता है कि यह बहुत धीमी है तो विकल्प हैं। संजीव कुमार ने उनके जवाब में कुछ लिंक दिए। के रूप में मेरा पहला लेख में सुझाव दिया

  1. उपयोग पाठक लेखक ताले: मैं भी खान में एक प्रदान करेंगे:
    Low-Lock Techniques in action: Implementing a Reader-Writer lock

    मुझे लगता है कि लिंक यहां से टेकअवे बोली जाएगा। यदि लॉक परफ एक समस्या है, तो .NET System.ReaderWriterLock के लिए 'ड्रॉप इन' प्रतिस्थापन के रूप में कार्यान्वयन करें। जब तक माइक्रोसॉफ्ट अपनी लाइब्रेरी में संस्करण को ठीक नहीं करता तब तक इस कार्यान्वयन का उपयोग करने के लिए स्वतंत्र महसूस करें।

  2. स्पिन-लॉक वास्तव में मूल्यवान कम लॉक तकनीक हैं। यहां प्रबंधित कोड में एक साफ, सरल लेकिन कुशल पाठक-लेखक लॉक लिखित रूप से लिखे गए थे। यह लॉक मैंने देखा है कि अधिकांश कार्यान्वयन की तुलना में काफी सरल है, फिर भी इष्टतम के लिए क्लॉस्ट है। इसका कारण यह है कि स्पिन ताले का उपयोग प्रदर्शन को त्याग किए बिना ताला के डिजाइन और विश्लेषण को सरलता से सरल बनाता है। अन्य उच्च प्रदर्शन समवर्ती संरचनाओं को बनाने के लिए स्पिन लॉक कार्यान्वयन शो का उपयोग करने के लिए स्वतंत्र महसूस करें।
  3. रीडर-राइटर लॉक के रूप में सरल कुछ भी इसके व्यवहार के बारे में subtleties है (विशेष रूप से जब आप प्रदर्शन चिंताओं में कारक)। इसे सरल रखना वास्तव में यहां भुगतान करता है।
+0

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

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