आप इस तथ्य को बदल नहीं सकते कि विंडोज म्यूटेक्स रिकर्सिव हैं। और जबकि पॉज़िक्स थ्रेड डिफ़ॉल्ट रूप से रिकर्सिव नहीं होते हैं, तो का उपयोग PTHREAD_MUTEX_RECURSIVE
ध्वज के साथ करने के लिए कर सकते हैं।
विंडोज में एक म्यूटेक्स लॉक करना वास्तव में एक महंगा ऑपरेशन है, और इंटर-प्रोसेस सिंक्रनाइज़ेशन के लिए सबसे उपयुक्त है। एक म्यूटेक्स के लिए केवल एक ही प्रक्रिया में उपयोग किया जाता है, आमतौर पर एक महत्वपूर्ण अनुभाग का उपयोग किया जाता है, हालांकि ये फिर से प्रवेश कर रहे हैं। नोबगज़ राज्यों के रूप में, आपको गैर-पुनरावर्ती सिंक्रनाइज़ेशन प्राप्त करने के लिए 1 की अधिकतम गणना के साथ शुरू किया गया एक सेमफोर का उपयोग करना होगा।
एक सेमफोर ऑब्जेक्ट एक विशेष काउंटर की तरह है, जिसे परमाणु रूप से बढ़ाया जा सकता है और धागे (या प्रक्रियाओं को साझा किए जाने पर) में कम किया जा सकता है। अधिकतम 1 के साथ एक बनाकर, आपको आवश्यक गैर-पुनरावर्ती व्यवहार मिलता है।
दरअसल, मुझे यह समस्या विरासत कोड से संबंधित है और मैं इसे तर्क के बिना बिना हल करना चाहता हूं। तो, जानना चाहता था कि व्यवहार बदला जा सकता है या नहीं। मेरा कोड एकाधिक ओएस में काम करना चाहिए, इसलिए मैं चाहता हूं कि व्यवहार सभी ओएस में समान रहे। "ऐसा लगता है जैसे आप एक ही सिंक ऑब्जेक्ट को कई स्थानों पर अनुपयुक्त रूप से उपयोग करने का प्रयास कर रहे हैं।" - हाँ। यह नकारात्मक परिदृश्य का मामला है। मैं सिर्फ नकारात्मक परिदृश्य में सभी ओएस में व्यवहार समान होना चाहता हूं। आपके उत्तर के लिए धन्यवाद! – Jay
ठीक है, एक बढ़ावा सेमफोर का उपयोग करें। बहु मंच और गैर-पुनर्वित्त। –
+1 (अनुवर्ती टिप्पणी उत्तर के रूप में अच्छी है)। – WhozCraig