2012-10-18 11 views
6

मुझे std::shared_lock टेम्पलेट क्लास के नए मानक से बहुत कुछ याद आ रहा है। बूस्ट में। boost::shared_lock है, यहां तक ​​कि boost::upgrade_lock मौजूद है।मानक सी ++ 11 में साझा_लॉक या अपग्रेड_लॉक कैसे करें?

ऐसा क्यों है, सी ++ 11 में कोई std :: shared_lock और std::unique_lock नहीं है?
boost::shared_lock के समान व्यवहार प्राप्त करना संभव है, लेकिन शुद्ध सी ++ 11 में?

मैं boost::shared_lock<std::mutex> का उपयोग करने के बारे में सोच रहा था, लेकिन इसका बहुत अधिक अर्थ नहीं है, क्योंकि std::mutex में lock_shared() सदस्य नहीं है। और, std::shared_mutex जैसे कोई भी नहीं है।

+0

यदि आप पहले ही बूस्ट का उपयोग करते हैं, तो मुझे लगता है कि 'std :: mutex' के पक्ष में' boost :: shared_mutex' से परहेज करने का कोई मतलब नहीं है। –

उत्तर

11

std::shared_mutex के लिए हावर्ड का प्रस्ताव सी ++ 11 के लिए बंद कर दिया गया था क्योंकि उचित समय पर विचार करने के लिए समय की कमी थी। उन्होंने इसे फिर से सी ++ 17 के लिए प्रस्तावित किया है, और इस सप्ताह पोर्टलैंड में बैठक में इसकी चर्चा की जा रही है।

औसत समय में, यदि आप बूस्ट का उपयोग कर सकते हैं तो आप भी हो सकते हैं; मानकीकृत होने के लिए कोई नई कार्यक्षमता नहीं होगी।

यह कहा गया है कि shared_mutex का उपयोग वास्तव में लाभ का है --- कई मामलों में यह म्यूटेक्स पर विवाद के कारण आशाजनक प्रदर्शन लाभ प्रदान नहीं करता है।

+0

आपके लिए धन्यवाद एंथनी का जवाब। चूंकि मैंने कुछ खोदने और हॉवर्ड के प्रस्ताव के बारे में इस चर्चा को खोजने के बाद से: http://permalink.gmane.org/gmane.comp.lib.boost.devel/211180 –

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