आप जितना सोचते हैं, उससे ज्यादा सरल है।
Microsoft के अनुसार : दlock
कीवर्ड यह सुनिश्चित करता है कि एक धागा कोड के एक महत्वपूर्ण खंड में प्रवेश नहीं करता है जबकि दूसरा धागा महत्वपूर्ण अनुभाग में है। यदि कोई अन्य थ्रेड लॉक किए गए कोड को दर्ज करने का प्रयास करता है, तो वह तब तक प्रतीक्षा करेगा, जब तक कि ऑब्जेक्ट जारी न हो जाए।
lock
कीवर्ड कॉल Enter
ब्लॉक के शुरू में और Exit
ब्लॉक के अंत में। lock
कीवर्ड वास्तव Monitor
में बैक एंड पर कक्षा को संभालता है ।
उदाहरण के लिए:
private static readonly Object obj = new Object();
lock (obj)
{
// critical section
}
उपरोक्त कोड में, पहले थ्रेड एक महत्वपूर्ण अनुभाग में प्रवेश करता है, और फिर यह लॉक हो जाएगा obj
। जब एक और धागा दर्ज करने की कोशिश करता है, तो यह लॉक करने की भी कोशिश करेगा obj
, जो पहले से ही पहले धागे से बंद है। दूसरे धागे को रिलीज होने के लिए पहले धागे का इंतजार करना होगा obj
। जब पहला धागा निकलता है, तो दूसरा धागा लॉक obj
हो जाएगा और महत्वपूर्ण खंड में प्रवेश करेगा।