2009-07-22 28 views
59

संभव डुप्लिकेट:
What are the differences between various threading synchronization options in C#?मॉनिटर बनाम Mutex

एक मॉनिटर और सी # में एक Mutex के बीच क्या अंतर है?

मॉनिटर का उपयोग कब करें और सी # में म्यूटेक्स का उपयोग कब करें?

+0

http://stackoverflow.com/questions/301160/what-are-the-differences-between-various-threading-synchronization-options-in-c – joe

+0

मैं प्रति डिफ़ॉल्ट लॉक का उपयोग करने के साथ सहमत हूं, लेकिन आपको कॉल करने की आवश्यकता है मॉनीटर करें। अगर बाहर निकलें/बाहर निकलें 1) एक टाइमआउट की आवश्यकता है या 2) यदि किसी कारण से लॉकिंग स्कोप एक विधि तक ही सीमित नहीं है। –

+0

एक अतिरिक्त नोट के रूप में, मॉनिटर्स को इसकी प्रतीक्षा/पल्स विधियों के साथ अक्सर "हालत चर" कहा जाता है। यह एक थ्रेड को किसी अन्य थ्रेड कॉल मॉनिटर पर कॉल करने तक कुछ इंतजार करने की अनुमति देता है। – nos

उत्तर

14

एक म्यूटेक्स को प्रक्रियाओं में साझा किया जा सकता है, और मॉनीटर से अधिक भारी वजन है।

मॉनीटर का उपयोग करें जब तक कि आपको प्रक्रिया सीमाओं में सिंक्रनाइज़ करने की आवश्यकता न हो।

39

Monitor प्रबंधित किया जाता है, और अधिक हल्का वजन - लेकिन यह आपके AppDomain तक सीमित है। एक Mutex नामित किया जा सकता है, और प्रक्रियाओं को फैला सकता है (अनुप्रयोगों के बीच कुछ सरल आईपीसी परिदृश्यों को अनुमति देता है), और कोड में उपयोग किया जा सकता है जो प्रतीक्षा-संभाल चाहता है)।

सबसे सरल परिदृश्यों के लिए, Monitor (lock के माध्यम से) ठीक है।

16

इस सामग्री पर सलाह का एक अच्छा स्रोत जोसेफ अल्बाहारी द्वारा "सी # में थ्रेडिंग" है। सभी सामग्री ऑनलाइन उपलब्ध है। मेरी राय में, यह the whole book पढ़ने के लिए लायक है, लेकिन यो इन भागों की जाँच कर सकते हैं:

हालांकि इसमें .NET 4.0 new parallel constructs शामिल नहीं है, यह एक बहुत अच्छा प्रारंभिक बिंदु है।

अद्यतन: पुस्तक अद्यतन कर दी गई है। अब, इसमें part 5 में .NET 4.0 समांतर प्रोग्रामिंग शामिल है।

संबंधित मुद्दे