2016-06-29 69 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(); 

在boost或其他庫中是否存在這種類型的東西?

+4

好像有綁到這樣一個低級別的一個(智能對象的引用),這樣一個高層次的概念(時間資源分配)會導致非常脆,固有的非確定性程序。 – MooseBoys

+0

這不應該很難實現,對吧? – Zereges

+1

@MooseBoys可能。這可能是一個被小心處理的動物,但我想要一個動物來玩。 –

回答

0

我認爲你是通過定時失去它的智能指針的好處。只需要負責管理這些資源的一些對象,並在需要時從中請求資源。否則,在使用指針之前,您需要檢查資源是否仍然被加載。這是共享指針的確切問題,其中一些其他代碼可能使資源/內存無效,並且在使用它之前必須始終驗證指針的資源。

+0

是的,這與weak_ptr有一些相似之處。但我的問題不在於討論可能的好處/缺點,而在於這種對象是否存在。 –

相關問題