इस article के अनुसार:एक std :: mutex को दो बार 'अनिर्धारित व्यवहार' लॉक क्यों कर रहा है?
आप कोशिश करते हैं और बीच में अनलॉक किए बिना एक ही धागे से दो बार एक गैर पुनरावर्ती म्युटेक्स ताला हैं, तो आप अपरिभाषित व्यवहार मिलता है।
मेरा बहुत ही मूर्ख मन मुझे बताता है कि वे सिर्फ एक त्रुटि क्यों नहीं लौटते? क्या ऐसा कोई कारण है कि यह यूबी क्यों होना चाहिए?
आप डिफ़ॉल्ट स्मृति आदेश के साथ atomic_flag का उपयोग करना चाहते हो सकता है। इसमें डेटा रेस नहीं हैं और कई अनलॉक कॉल के साथ म्यूटेक्स जैसे अपवाद फेंकते हैं (और अनियंत्रित रूप से बंद हो जाते हैं, मैं जोड़ सकता हूं ...)। वैकल्पिक रूप से, परमाणु (उदा। परमाणु [बूल] या परमाणु [int] (त्रिभुज ब्रैकेट के साथ, नहीं []) है, जिसमें लोड और तुलना_exchange_strong जैसे अच्छे कार्य होते हैं। http://www.cplusplus.com/reference/atomic/atomic_flag/ http://www.cplusplus.com/reference/atomic/atomic/ – Andrew
साथ ही 'mutex' को ओएस देशी म्यूटेक्स के साथ कार्यान्वित किया जा सकता है, फिर यह परिभाषित करने के लिए समझें कि अलग-अलग ओएस पर अलग-अलग क्या हो सकता है ताकि 'std :: mutex' ओयू के आस-पास एक पतली आवरण हो सकता है जो मुट्टेक्स प्रदान करता है। – Phil1970