आप std::condition_variable
साथ std::recursive_mutex
गठबंधन कर सकते हैं, जिसका अर्थ है कुछ इस तरह है:क्या आप std :: condition_variable के साथ std :: recursive_mutex को जोड़ सकते हैं?
std::unique_lock<std::recursive_mutex> lock(some_recursive_mutex)
some_condition_var.wait(lock);
यदि यह अनुमति नहीं है, तो क्यों नहीं?
मैं वीसी ++ 11 का उपयोग कर रहा हूं।
"आपको यह सुनिश्चित करना होगा कि दिए गए थ्रेड ने केवल एक बार रिकर्सिव म्यूटक्स को लॉक कर दिया है" -> जिसका अर्थ है कि आप रिकर्सिव म्यूटेक्स पर किसी शर्त का उपयोग नहीं कर सकते हैं, है ना? मेरा मतलब है कि किसी शर्त का उद्देश्य अन्य धागे के साथ सिंक करना है, और यह काम नहीं करेगा अगर म्यूटेक्स को प्रतीक्षा के दौरान अनलॉक करने की गारंटी नहीं है। –
@ ह्यूगोमैक्सवेल यह आपके उपयोग के मामले पर निर्भर करता है। यदि आप जानते हैं कि आप अपने ताले में केवल 1 स्तर गहरे हैं, तो आप इसे स्थिति के साथ उपयोग कर सकते हैं। उदाहरण के लिए, यदि म्यूटेक्स की रिकर्सिव प्रकृति का उपयोग केवल स्थिति के सिग्नलिंग पक्ष पर किया जाता है, तो यह ठीक काम करेगा। –