एक सी ++ प्रोग्राम में, मैं दो संदर्भ गिना वस्तुओं की है। राजा को नष्ट होने तक वारिस को अवरुद्ध करने की जरूरत है। राजा एक संदर्भ गिनती वस्तु है जिसे संदर्भित किया जाना चाहिए जब संदर्भ गणना शून्य हो जाती है। यदि वार के पास राजा का संदर्भ है, तो राजा की संदर्भ संख्या शून्य पर कभी नहीं जाएगी। राजा नष्ट होने तक हीर ब्लॉक कैसे हो सकता है?सी ++ वस्तु समाप्ति अधिसूचना
उत्तर
आप how weak_ptr
works के समान गैर-स्वामित्व (या "कमजोर") संदर्भ का उपयोग कर सकते हैं।
राजा मरने तक प्रतीक्षा करने के लिए, आप एक म्यूटेक्स का उपयोग कर सकते हैं कि जब तक वह मर जाए तब तक राजा पकड़ सकता है और वारिस ब्लॉक को राजा को छोड़ने का इंतजार कर रहा है।
यदि आपको कई उत्तराधिकारी इंतजार करने की आवश्यकता है और उत्तराधिकारियों को कुछ आदेश देने की आवश्यकता है, तो आपके पास "वारिस चयनकर्ता" ऑब्जेक्ट हो सकता है जो वारिस की सूची और उनके प्राथमिकता के क्रम का ट्रैक रखता है, और जब राजा रिलीज़ करता है mutex यह उस म्यूटेक्स के स्वामित्व को सूची में अगले उत्तराधिकारी को सौंपेगा।
धन्यवाद @ जेम्स। यहां समाधान है जिसके साथ मैं समाप्त हुआ:
म्यूटेक्स विधि वादाजनक लग रहा था, लेकिन अधिकांश म्यूटेक्स प्राप्त करने वाले धागे की अपेक्षा करते हैं और थ्रेड को समान मानते हैं। अंत में, मैंने वारिस को स्टैक पर शून्य की गिनती के साथ एक सेमफोर बनाया, राजा को सैमफोर में एक पॉइंटर पास किया, राजा को छोड़ दिया, और फिर सेमफोर हासिल करने का प्रयास किया। गिनती शून्य है, इसलिए वारिस तुरंत ब्लॉक करता है। जब राजा के विनाशक को बुलाया जाता है, तो यह सैमफोर पर 'रिलीज' कहता है। यह रॉग वेव सेमफोर के साथ ठीक काम करता प्रतीत होता है।
- 1. ऐप्पल पुश अधिसूचना प्रमाणपत्र समाप्ति
- 2. जावा प्रक्रिया समाप्ति पर अधिसूचना प्राप्त करें
- 3. PHP अधिसूचना एक अपूर्ण वस्तु
- 4. कुकीज़ समाप्ति सी #
- 5. अधिसूचना
- 6. सी में एक वस्तु ++
- 7. सी ++ वैश्विक वस्तु
- 8. वस्तु सी # परावर्तन
- 9. वस्तु सी # में कास्टिंग
- 10. सी ++ समारोह वस्तु
- 11. सी # एएसपीनेट: क्रोम में कुकी समाप्ति तिथि
- 12. प्रोग्राम समाप्ति (सी/सी ++) पर गारंटीकृत फ़ाइल हटाना
- 13. सदस्यता समय समाप्ति और सत्र समय समाप्ति
- 14. अधिसूचना
- 15. अधिसूचना
- 16. अधिसूचना
- 17. memcached समाप्ति समय
- 18. सी ++ वस्तु उपclasses के बिना?
- 19. सी # एएसपी.नेट Google Checkout अधिसूचना पावती
- 20. सूचित करते समय प्रतीक्षा करें (लंबी टाइमआउट) अधिसूचना या समय समाप्ति के लिए बाहर निकलें?
- 21. मैं प्रारंभिक और समाप्ति सूचकांक
- 22. प्रोग्रामिंग भाषाओं में समाप्ति
- 23. (वस्तु) 0 == (वस्तु) 0
- 24. सेलेनियम फ़ायरफ़ॉक्स खोलें समय समाप्ति
- 25. फ़ाइल बदलते समय अधिसूचना?
- 26. NSNotificationCenter ऑब्जर्वर अधिसूचना
- 27. अमेज़ॅन एस 3 समाप्ति तिथि?
- 28. कोको कस्टम अधिसूचना उदाहरण
- 29. एंड्रॉइड पुश अधिसूचना
- 30. पर्यवेक्षी त्रुटि (असामान्य समाप्ति)
बह .. हमने एक ही चीज़ का उत्तर दिया और आपने प्रतीक्षा भाग पर थोड़ा और जोड़ा। मेरा हटा दिया और तुम्हारा ऊपर उठाया। बस जोड़ने के लिए, वारिस को राजा को कमजोर_पीटीआर संदर्भ रखना चाहिए। अधिसूचना –
+1 कमजोर_पीआरआर काम नहीं करेगा - कम से कम मतदान के बिना नहीं। राजा पर अवरुद्ध करने की विधि को निष्पादित करने के लिए, आपको कमजोर-पीआरटी को संदर्भित करना होगा। जब ऐसा होता है, तो आप ऑब्जेक्ट का एक मजबूत संदर्भ प्राप्त करते हैं और इसे तब तक पकड़ते हैं जब तक यह दायरे में न हो। –
के लिए mutex का उपयोग करने के लिए – brianegge