【发布时间】:2013-01-26 12:35:12
【问题描述】:
我的程序将创建和删除大量对象(来自 REST API)。这些对象将被多个地方引用。我想要一个“内存缓存”并通过引用计数来管理对象的生命周期,以便在不再使用它们时释放它们。
所有对象都继承自基类Ressource。
Cache 主要是 std::map<_key_, std::shared_ptr<Ressource> >
那我就纳闷了,Cache怎么知道Ressource的引用计数什么时候减少了? IE。致电std::shared_ptr destructor 或operator=。
1/ 我不想遍历 std::map 并检查每个 ref.count()。
2/ 我可以重用 std::shared_ptr 并实现自定义钩子吗?
class RessourcePtr : public std::shared_ptr<Ressource>
...
3/ 我应该实现自己的引用计数类吗?前任。 https://stackoverflow.com/a/4910158/1058117
谢谢!
【问题讨论】:
-
那将是一个奇怪的缓存。想象一下,我请求一个资源,我的指针超出范围,然后再次请求它。它会触发对资源的新请求,实际上不会发生缓存。您可能想了解一些著名的缓存算法。
-
@pmr :哦,这取决于。缓存的资源可以立即释放,也可以不释放。这背后的问题是确保对象与服务器保持同步。
标签: c++ shared-ptr smart-pointers