मैं एंड्रॉइड 2.2 का उपयोग कर रहा हूं, जो एसटीएलपोर्ट के संस्करण के साथ आता है। किसी कारण से, इसे गैर-थ्रेड सुरक्षित होने के लिए कॉन्फ़िगर किया गया था। यह कॉन्फ़िगरेशन हेडर फ़ाइल में #define _NOTHREADS का उपयोग करके किया गया था।क्या सी ++ एसटीएल थ्रेड-सुरक्षित कंटेनरों के लिए सुरक्षित है (एसटीएलपोर्ट कार्यान्वयन का उपयोग कर)?
जब मैंने अलग-अलग अलग-अलग pthreads से गैर-साझा कंटेनर (उदा। तार) का निर्माण और प्रारंभ किया, तो मुझे स्मृति भ्रष्टाचार मिल रहा था।
_NOTHREADS के साथ, ऐसा लगता है कि allocator.cpp के अंदर एसटीएल में कुछ निम्न-स्तर कोड उचित लॉकिंग नहीं करता है। ऐसा लगता है कि सी मॉलोक के लिए थ्रेड सुरक्षा प्रदान नहीं कर रहा है।
क्या किसी को पता है कि एसटीएल एंड्रॉइड पर डिफ़ॉल्ट रूप से _NOTHREADS के साथ क्यों बनाया जा सकता है? इसे बंद करके, मैं सोच रहा हूं कि कोई दुष्प्रभाव हो सकता है या नहीं। एक बात जो मैं सोच सकता हूं वह थोड़ा अपमानजनक प्रदर्शन है, लेकिन मुझे बहुत पसंद नहीं दिख रहा है क्योंकि मैं बहुत सारे थ्रेडिंग का उपयोग कर रहा हूं।
यह लोगों को आपके प्रश्न का उत्तर देने में मदद कर सकता है अगर आपने कुछ नमूना कोड दिया जो इस तरह की चीज दिखाता है जो समस्या का कारण बनता है। (मुझे पता है * मेरे पास इसका उत्तर देने की विशेषज्ञता नहीं है; एसटीएल कुछ ऐसा नहीं है जिसे मैंने गहराई से पढ़ा है।) –
"एक्सेस ... ऑब्जेक्ट्स" से आपका क्या मतलब है? – LavaScornedOven
इस प्रश्न से पहले पूछा गया है (देखें http://stackoverflow.com/questions/4029448/thread-safety-for-stl-queue और http://stackoverflow.com/questions/1362110/is-the-c-stl- stdset-thread-safe), लेकिन अभी तक इस प्रश्न के एक केंद्रीय उत्तर पर है। चूंकि यह संस्करण स्टैक ओवरफ्लो पर इस प्रश्न का उत्तर देने के लिए ** ** केंद्रीय स्थान बनने के लिए उतना ही अच्छा है, इसलिए कृपया अपने कार्यान्वयन का नाम शामिल करने के लिए एक बड़े शीर्षक का उपयोग करें, और मूल दस्तावेज़ के उद्धरण और लिंक को शामिल करें। –