2016-06-29 6 views
6

कुछ मामलों में मैं किसी प्रकार का समय-आधारित स्मार्ट पॉइंटर चाहता था, उदाहरण के लिए कुछ भारी वस्तु को कैश करने के लिए, लेकिन उपयोग नहीं होने पर एक निश्चित समय के बाद इसे स्वचालित रूप से रिलीज़ करें। जब सूचक स्पर्श किया जाता है (डीरेंसेंस) गिनती को फिर से शुरू किया जाता है, और यदि आप गणना की अवधि के लिए जीवित वस्तु को 'लॉक' करने की आवश्यकता है तो आप भी गिनती को रोक सकते हैं। कुछ ऐसा:क्या समय संकेतक मौजूद हैं?

timed_ptr<Type,30> p = new Type(); \\object is deleted after 30 seconds, and pointer set to a checkable 'null' state 

... 

p.stop_count_down(); 
// do something with the object, guaranteed it won't expire while we still need it. 
p.start_count_down(); 

क्या इस तरह का कुछ भी बढ़ावा या अन्य पुस्तकालय में मौजूद है?

+4

ऐसा लगता है कि इस तरह के निम्न स्तर के एक (स्मार्ट ऑब्जेक्ट संदर्भ) से जुड़ी ऐसी उच्च स्तरीय अवधारणा (अस्थायी संसाधन आवंटन) बहुत भंगुर और स्वाभाविक रूप से गैर-निर्धारक कार्यक्रमों का कारण बनती है। – MooseBoys

+0

इसे कार्यान्वित करना मुश्किल नहीं होना चाहिए, है ना? – Zereges

+1

@MooseBoys संभवतः। यह एक जानवर हो सकता है जिसे ध्यान से संभाला जा सके, लेकिन मैं एक होना चाहता हूं और इसके साथ खेलना चाहता हूं। –

उत्तर

0

मुझे लगता है कि आप इसे समय के साथ एक स्मार्ट सूचक का लाभ खो रहे हैं। इन संसाधनों के प्रबंधन के लिए बस कुछ ऑब्जेक्ट ज़िम्मेदार है और आवश्यकता होने पर संसाधन से अनुरोध करें। अन्यथा, अगर पॉइंटर के किसी भी उपयोग से पहले संसाधन अभी भी लोड हो गया है तो आपको चेक डालना होगा। यह साझा पॉइंटर्स की सटीक समस्या है जहां कुछ अन्य कोड संसाधन/स्मृति को अमान्य कर सकते हैं, और इसे हमेशा उपयोग करने से पहले सूचक के संसाधन को सत्यापित करना होगा।

+0

हां, weak_ptr के साथ कुछ समानता है। लेकिन मेरा सवाल संभावित लाभ/कमियों पर चर्चा करने के बारे में नहीं है, यह इस बात की है कि इस तरह की वस्तु कहीं मौजूद है या नहीं। –

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