मेरे पास निम्न स्थितियां है: मैं किसी ऑब्जेक्ट तक पहुंच को पार करना चाहता हूं।सुरक्षित रूप से उसी ऑब्जेक्ट पर लॉक और मॉनिटर किया जा सकता है?
अब तक मैं normaly एक ताला वस्तु
object lockObject = new object();
...
method1: lock(lockObject) { CODE1 }
का प्रयोग करेंगे अब मैं भी एक तरीका है जिसके एक और धागे से कहा जा सकता है की है। इसे अज्ञात समय के लिए अवरुद्ध नहीं किया जाना चाहिए, इसके बजाय इसे एक निर्धारित समय में जवाब देना चाहिए।
इस मामले में मैं एक मॉनिटर का प्रयोग करेंगे,
method2:
try{
Monitor.TryEnter(lockObject , 20000, ref lockTaken);
if (lockTaken) {CODE2}
}
catch(...){...}
finally
{
if (lockTaken) Monitor.Exit(timerLock);
}
अब की तरह मेरे सवाल यह है: लॉक कर सकते हैं और मॉनिटर इस तरह से मिलाया जा अगर lockobject एक ही है और परस्पर एक दूसरे को बाहर, या होगा प्रत्येक लॉक को मॉनिटर में बदलने की आवश्यकता होनी चाहिए।
तो क्या दोनों बार एक ही टोकन "लॉक" हो जाएगा, या मॉनीटर ऑब्जेक्ट के लिए एक और टोकन बना देगा तो लॉक?
एक झलक में मैं नहीं देख सकता कि अनुप्रयोग एक ही समय में दोनों के कोड में चलता है। लेकिन मुझे नहीं पता कि क्या कोई समय मुद्दा मौजूद हो सकता है, जहां सीओडीई 1 और सीओडीई 2 समानांतर में निष्पादित किए जाते हैं।
मुझे तुम्हारा दर्द महसूस होता है; मैं अक्सर चाहता हूं कि 'लॉक' कीवर्ड ने किसी भी समय –