2012-03-07 22 views
5

उदाहरण के लिए, एक std :: नक्शा एक टेढ़ा पेड़ के साथ लागू किया पर विचार करें। इस प्रकार की पेड़ संरचना उत्परिवर्तनीय है और हर बार मानचित्र को पढ़ने के लिए उपयोग किया जाता है। जब नक्शा स्थिर होता है, तो समवर्ती रीडिंग के अलगाव को किसने गारंटी देनी चाहिए, क्या यह उपयोगकर्ता कोड या मानचित्र कार्यान्वयन पर निर्भर है?कन्करेंसी :: टी

+1

मुझे नहीं लगता कि मानक कंटेनरों के संगामिति के बारे में कोई बयान देता है:

ये ढेर अतिप्रवाह पर संबंधित सवाल कर रहे हैं। –

+0

@ ओली चेहरल्सवर्थ: क्या यह सी ++ 11 के लिए भी सच है? –

+0

यह इस प्रश्न का एक प्रकार का डुप्लिकेट है: http://stackoverflow.com/questions/1846186/thread-safety-of-stdmap-for-read-only-operations – CashCow

उत्तर

4

प्रश्नकर्ता जानता है कि अगर आप धागे कि एक संग्रह को लिखने है, उपयोगकर्ता का प्रबंधन करना चाहिए सिंक्रनाइज़ लॉकिंग।

सवाल यह प्रतीत होता है कि मानक थ्रेड-सुरक्षा की गारंटी दे सकता है अगर सिमुलेटर थ्रेड केवल संग्रह को पढ़ रहे हों।

मुझे यकीन नहीं है कि पुराने सी ++ मानकों के पास किसी भी परिचालन के साथ थ्रेड-सुरक्षा की कोई गारंटी थी, लेकिन नया एक होगा (अनुभाग टिप्पणियों में दिया गया है, 23.2.2)। जैसा कि है, ज्यादातर विक्रेता अब समवर्ती पढ़ने के बीच थ्रेड-सुरक्षा की गारंटी देते हैं, इस तथ्य के बावजूद कि संग्रह में निहित वस्तुओं के भीतर समेकन स्पष्ट रूप से उपयोगकर्ता द्वारा संभाला जाना आवश्यक है।

इसी तरह, आप एसटीएल संग्रह पर रीड-राइट लॉक का उपयोग करने में सक्षम होंगे।

Thread safety of std::map for read-only operations

Is the C++ std::set thread-safe?

-1

std::* किसी भी धागा सुरक्षा की गारंटी नहीं देता है।

आप क्या कह रहे हैं के साथ मुझे के समान लगता है::

+0

सी ++ 11 के असल में धारा 23.2.2 मानक कंटेनर पर डेटा रेस गारंटी को परिभाषित करता है। –

+0

ठीक है, मेरा मतलब है सी ++ 03 – triclosan