2016-10-23 7 views
15

सी ++ 11 पेश किया गया std::mutex और इसका विस्तारित संस्करण - std::timed_mutexक्यों c_+ 14 में shared_timed_mutex परिभाषित किया गया है, लेकिन C++ 17 में shared_mutex?

हालांकि, सी ++ 14 में हमारे पास std::shared_timed_mutex है, लेकिन इसके 'पैरेंट', std::shared_mutex को सी ++ 17 में जोड़ा जा रहा है।

क्या इसके लिए कोई उचित स्पष्टीकरण है?

यदि मैं std::shared_timed_mutex की 'समयबद्ध' कार्यक्षमता का उपयोग नहीं कर रहा हूं, तो क्या यह प्रस्तावित std::shared_mutex से बदतर (धीमी, अधिक संसाधनों का उपभोग) होगा?

उत्तर

18

साझा mutex मूल रूप से इसमें समय था, और shared_mutex कहा जाता था।

एक कार्यान्वयनकर्ता (एमएसवीसी आईआईआरसी) ने नोट किया कि वे समय के बिना इसे "सस्ता" लागू कर सकते हैं। विशेष रूप से, SRWLOCK विंडोज़ पर एक मौजूदा आदिम है जो साझा म्यूटेक्स को लागू करने के लिए पर्याप्त है, लेकिन समय के लिए अतिरिक्त मशीनरी की आवश्यकता होती है। (Via @ t.c।)। (हालांकि, मेरा मानना ​​है कि यह सिर्फ नहीं आसान क्योंकि पहले से ही लिखा है, लेकिन यह भी मौलिक रूप से अधिक महंगा है, कम से कम 86 पर/64 विंडोज़)

यह मानक के लिए एक नए प्रकार जोड़ने के लिए बहुत देर हो चुकी थी, लेकिन नहीं इसका नाम बदलने में बहुत देर हो चुकी है।

तो इसका नाम बदलकर shared_timed_mutex कर दिया गया, और अगले मानक में अनियमित संस्करण जोड़ा गया।

Here नाम में शामिल कागजात में से कम से कम एक है।

हम shared_timed_mutex को shared_mutex का नाम बदलने का प्रस्ताव:

(क) अन्य mutexes के साथ स्थिरता के लिए (विसंगति नामकरण फिक्सिंग);

(बी) share_mutex के लिए कमरा छोड़ने के लिए जो साझा_timed_mutex की तुलना में कुछ प्लेटफॉर्म पर अधिक कुशल हो सकता है।

+4

@ मार्टिनबोनर संख्या, 'CRITICAL_SECTION' साझा म्यूटेक्स (उर्फ रीडर/लेखक लॉक) नहीं है। 'SRWLOCK' आदिम है। –

+0

अरे अरे! मैं "साझा" और "रिकर्सिव" के बीच भ्रमित हो गया! –

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