2010-11-22 10 views
5

मुझे पूरी तरह से यकीन नहीं है कि इस बहु-थ्रेडिंग परिदृश्य को सर्वश्रेष्ठ तरीके से कैसे पूरा किया जाए ताकि किसी भी इनपुट की सराहना की जा सके।लॉकिंग भ्रम को पढ़ें/लिखें

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

उत्तर

5

हाँ, ReaderWriterLockSlim लगातार रीडर/निराला लेखक परिदृश्यों के लिए एकदम सही है।

व्यवहार है जैसा कि आप समझ - एक लेखक ही, लेखकों जब तक सभी पाठकों से किया जाता है, पाठकों, जबकि लेखक प्रक्रिया में है उपयोग नहीं कर सकते ब्लॉक।

सावधान उस समय आप लॉक पकड़ (चाहे पढ़ने या लिखने के लिए) काफी लंबे समय किसी भी समवर्ती उपयोग रोकने के लिए, और नहीं रह गया है हो सकता है।

+0

महान है, धन्यवाद! – Homde

1

हाँ, यह लग रहा है जैसे ReaderWriterLockSlim तुम क्या चाहते है।

एक लिखने ताला जब तक पढ़ने ताले स्थान पर हैं हासिल कर ली नहीं किया जाएगा। मेरा सुझाव है कि आप व्यवहार का पूरा विवरण के लिए दस्तावेज़ पढ़ें (कतारों ताला लगा, आदि):

http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx