Monitor.Enter
और Monitor.Exit
को उसी थ्रेड से कॉल करने के लिए डिज़ाइन किया गया है। लेकिन, अगर मुझे अधिग्रहण से अलग थ्रेड में लॉक जारी करने की आवश्यकता है तो क्या होगा?मॉनिटर। एंटर और मॉनिटर। विभिन्न धागे
उदाहरण के लिए: साझा संसाधन और एसिंक्रोनस ऑपरेशन है जो इस संसाधन का उपयोग करता है। ऑपरेशन BeginOperation
से शुरू होता है और साझा संसाधन पर लॉक प्राप्त करता है। EndOperation
विधि भी लॉक जारी करती है। EndOperation
को आमतौर पर कॉलबैक से दूसरे धागे में बुलाया जाता है, इस प्रकार मैं EndOperation
विधि में Monitor.Exit
पर कॉल नहीं कर सकता। इस मामले में सबसे अच्छा तरीका क्या है? Monitor
के बजाय AutoResetEvent
के साथ लॉकिंग को दोबारा जांचना अच्छा समाधान होगा?
"सेमफोर" का उपयोग करें? –
@pst क्यों विशेष रूप से 'सेमफोर' और 'ईवेंट' नहीं? – eigenein
सिंक्रनाइज़ेशन प्राइमेटिव्स जैसे [सेमफोर, सेमफोरस्लिम, रीडरवाइटर लॉक, रीडरवाइटर लॉकस्लिम, मैनुअल रीसेट, मैनुअल रीसेट इवेंटस्लिम, ऑटो रीसेट, काउंटरडाउन, इंटरलॉक, म्यूटेक्स इत्यादि] देखें। (Http://msdn.microsoft.com/en-us/library/system.threading.aspx) –