मैं अभी भी उलझन में हूँ ... जब हम इस तरह की कुछ बात लिखें:क्या लॉक() {} संसाधन को लॉक करता है, या क्या यह कोड का एक टुकड़ा लॉक करता है?
Object o = new Object();
var resource = new Dictionary<int , SomeclassReference>();
... और उस o
ताला जबकि resource
तक पहुँचने कोड के दो ब्लॉकों है ...
//Code one
lock(o)
{
// read from resource
}
//Code two
lock(o)
{
// write to resource
}
अब, यदि मेरे पास दो धागे हैं, तो एक थ्रेड निष्पादन कोड जो resource
से पढ़ता है और इसके लिए एक और लेखन, मैं resource
को लॉक करना चाहता हूं, जैसे कि इसे पढ़ा जा रहा है, लेखक को प्रतीक्षा करना होगा (और इसके विपरीत - अगर यह लिखा जा रहा है, पाठकों को इंतजार करना होगा)। क्या लॉक निर्माण मेरी मदद करेगा? ... या मुझे कुछ और इस्तेमाल करना चाहिए?
(मैं इस उदाहरण के प्रयोजनों के लिए Dictionary
उपयोग कर रहा हूँ, लेकिन हो सकता है कुछ भी)
दो मामलों मैं विशेष रूप को लेकर चिंतित हूं रहे हैं:
- दो धागे एक ही पंक्ति पर अमल करने की कोशिश कर रहा कोड की
- दो धागे समान संसाधन दोनों की स्थिति में
विल lock
मदद पर काम करने की कोशिश?
@SilverHorse: अपना संपादन पर stomping के लिए खेद है - पीठ में एक टैग को जोड़ने के लिए गया था और नहीं पता था कि आप इस बीच में संपादित चाहते हैं! – Shog9