म्यूटेक्स ओएस-स्तरीय हैंडल हैं। वे जब अपने प्रक्रिया करता है (यदि आप उन्हें जल्दी ही बंद नहीं करते, कि है।) बंद कर दिया प्राप्त करेंगे
संपादित
ठीक है, मैं स्पष्ट रूप से उदाहरण और सवाल गलत समझा। यदि आप यह पता लगाने की कोशिश कर रहे हैं कि कोई और उदाहरण मौजूद है, तो आप नामित म्यूटेक्स (या इसी तरह की ऑब्जेक्ट) बनायेंगे और बस इसके अस्तित्व को बिना लॉक किए बिना जांच लेंगे।
WaitOne
पर कॉल, स्वामित्व लेते हुए, ReleaseMutex
से छुटकारा पाता है (जब तक WaitOne
पर कोई अतिरिक्त कॉल नहीं है)। यदि आप म्यूटेक्स को पूरी तरह से जारी किए बिना धागे को समाप्त करते हैं, तो यह वस्तु को खराब स्थिति में छोड़ देता है, जैसा कि पाठ मीका उद्धरण में बताया गया है।
प्रक्रिया के पूरा होने से पहले संभाल को बंद करने के बारे में इस सवाल के बारे में आपका प्रश्न उठाया गया है, जो पूरी तरह से एक और चीज है।
अतिरिक्त
एसडीके [एपीआई] [1] स्तर पर, आप में नाकाम रहने के लिए जब एक ही नाम के एक म्युटेक्स पहले से ही बनाया गया है की उम्मीद के साथ CreateMutex
कॉल कर सकते हैं। .NET में (ठीक है, 4.0 में, कम से कम), एक [कन्स्ट्रक्टर] [2] है जो createdNew
बूल भरता है।
[1]: http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx CreateMutex
[2]: http://msdn.microsoft.com/en-us/library/bwe34f1k(v=VS.90).aspx Mutex
स्रोत
2010-08-14 17:52:03
नाम mutexes सामान्य रूप से केवल पार प्रक्रिया संचार, जो नहीं है कि आपके उदाहरण कुछ भी नहीं दिखा रहा है के समन्वय के लिए उपयोग किया जाता है। –
@Steven: इसके लिए mutexes का उपयोग करना वास्तव में एक अच्छा उपयोग है। पिछली विंडो या प्रक्रिया नाम या कुछ का पता लगाने की कोशिश करने से कहीं बेहतर है। 1) आपके आवेदन 2) कि म्युटेक्स साथ प्रक्रियाओं में सिंक्रनाइज़ किया जा रहा के पिछले उदाहरण के अस्तित्व का पता लगाने के एक नामित म्युटेक्स का उपयोग करना: – erikkallen
मैं के रूप में आप अपने कोड में दो अर्द्ध संबंधित कार्य कर रहे होते मेरे सवाल का अद्यतन,। –