यदि आपके पास शब्दकोश तक पहुंचने वाले एकाधिक थ्रेड हैं, तो आपको अपडेट और लुकअप पर लॉक करने की आवश्यकता है। लुकअप पर लॉक करने के लिए आपको जिस कारण की आवश्यकता है, वह यह है कि एक ही समय में आप एक लुकअप कर रहे हैं, और अपडेट के दौरान शब्दकोश असंगत स्थिति में हो सकता है। उदाहरण के लिए, मान लें कि आपकी एक धागा यह कर दिया है:
if (myDictionary.TryGetValue(key, out value))
{
}
और एक अलग थ्रेड यह क्या कर रहा है:
myDictionary.Remove(key);
क्या हो सकता है धागा TryGetValue
कर निर्धारित करता है कि है कि आइटम में है शब्दकोश, लेकिन इससे पहले कि यह आइटम पुनर्प्राप्त कर सके, अन्य धागा इसे हटा देता है।नतीजा यह होगा कि लुकअप करने वाला थ्रेड या तो अपवाद फेंक देगा या TryGetValue
true
लौटाएगा लेकिन value
null
होगा या संभवतः एक ऑब्जेक्ट जो कुंजी से मेल नहीं खाता है।
यह केवल एक चीज है जो हो सकती है। यदि आप एक धागे पर एक लुकअप कर रहे हैं और कोई अन्य धागा उस मूल्य का एक जोड़ करता है जिसे आप देखने की कोशिश कर रहे हैं तो कुछ भी विनाशकारी हो सकता है।
स्रोत
2010-10-22 19:49:19
यदि आपका प्रश्न गंभीर है और बहुप्रचारित कार्यक्रमों का संबंध है, तो कृपया सुनिश्चित करें कि आप स्पष्ट रूप से अपने प्रश्न में उल्लेख करते हैं। –
मेरा प्रश्न आपकी टिप्पणी के रूप में गंभीर नहीं था। लुकअप के लिए भी – DarthVader