2013-05-28 7 views
7

आम तौर पर, गहरी प्रतिलिपि क्यूटी कंटेनरों का सही तरीका क्या है? मैं कंटेनरों को दोबारा प्रतिलिपि बनाने के बारे में चिंतित नहीं हूं, हालांकि इस तरह से संबोधित करना सहायक होगा।क्यूएपी और अन्य क्यूटी कंटेनर की गहरी प्रतिलिपि कैसे करें

+2

उपरोक्त कोड मेरे लिए ठीक काम करता है - आपको ऐसा क्यों लगता है? – cmannett85

+0

@ cmannett85 मैंने इसे जीडीबी के माध्यम से चलाया है और देखा है कि दोनों मानचित्रों में "value2" –

+0

है हां, मैंने पहले कोड को गलत तरीके से पढ़ा है, इस स्निपेट को ठीक काम करना चाहिए। मेरा जवाब हटाना –

उत्तर

11

हर कोई आपको क्या बताएगा इसके बावजूद - कि आप क्यूटी कंटेनरों की गहरी प्रतिलिपि नहीं करते हैं - ऐसी स्थितियां हैं जिनमें आपको बस एक उथले की बजाय वास्तविक गहरी प्रतिलिपि करने की आवश्यकता होती है। ऐसा करने के लिए, detach() का उपयोग करें:

container1 = container2; 
container1.detach(); 
+0

बहुत बढ़िया। यह जवाब –

+0

क्या आप इसका उदाहरण दे सकते हैं जब आपको ऐसा करने की आवश्यकता होगी? जिस क्षण आप 'कंटेनर 1' को संशोधित करते हैं, वह एक गहरी प्रतिलिपि करेगा, अगर आप इसे संशोधित नहीं करते हैं - तो आप इसे कॉपी क्यों करना चाहते हैं !? – cmannett85

+3

@ cmannett85 बस कल मुझे बिल्कुल ऐसा करने की ज़रूरत थी। मेरे पास दो धागे हैं, एक को एक चैनल (सॉकेट के समान) पर डेटा प्राप्त होता है, डेटा को संसाधित करता है और इसे दो कंटेनरों में संग्रहीत करता है। अन्य धागा समय-समय पर नए डेटा की जांच करके डेटा प्रस्तुत करता है। यदि कोई नया डेटा है, तो यह एक म्यूटेक्स को लॉक करता है और कुछ कंटेनरों से डेटा कॉपी करता है - यह वह जगह है जहां मुझे गहरी प्रतिलिपि बनाने की आवश्यकता होती है। अगर मैंने गहरी प्रतिलिपि नहीं की है, तो डेटा प्रोसेसिंग थ्रेड उन्हें संशोधित करते समय प्रत्येक कंटेनरों के लिए लॉकिंग किया जाएगा, जो प्रदर्शन को कम कर देगा। – kralyk

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