एक अलग private
डमी ऑब्जेक्ट पर लॉकिंग आपको गारंटी देता है कि उस ऑब्जेक्ट में कोई और लॉक नहीं हो रहा है।
यदि आप डेटा को लॉक करते हैं और डेटा का एक ही टुकड़ा बाहर दिखाई देता है तो आप उस गारंटी को खो देते हैं। उदाहरण के लिए:
public class MyObject
{
public void SharedMethod()
{
lock (this)
{
// Do stuff
}
}
}
class Program
{
static void Main(string[] args)
{
MyObject o = new MyObject();
lock (o)
{
new Thread(() =>
{
// Gets blocked 2s because of external lock
o.SharedMethod();
}).Start();
Thread.Sleep(2000);
}
}
}
स्रोत
2009-12-09 11:15:21
अच्छा सवाल, यह मेरा पहला विचार भी था। – Russell
लोगों को उत्तर खोजने में मदद करने के हित में वे इस प्रश्न की तलाश में नहीं हैं, उन्हें बंद नहीं किया जाना चाहिए। @ बिल, तथाकथित सटीक डुप्लिकेट प्रश्न अजीब शीर्षक और शब्द है और इस प्रश्न के विपरीत मौलिक प्रश्न स्पष्ट रूप से नहीं बताता है। मेरा मानना है कि इस प्रश्न में खोजों पर ध्यान आकर्षित करने की संभावना अधिक है। इससे पहले कि मैंने फिर से खोलने के लिए मतदान किया है। – Ash