我需要在我的类(class)中有一个共享计数器(当计数器归零时调用一些函数)。
我可以使用 shared_ptr<char>
有一个删除器,但这种方法有分配不需要的 char
的开销并保持指向它的指针。
基本上,我需要 shared_ptr
的引用计数部分.
我不知道如何利用 shared_ptr
并避免这种开销。
是否有共享计数器的可移植 C++11 实现(即,仅使用标准 c++11 和 std
,没有显式互斥锁等)?
附言。 Counter 不是整个类(class)独有的。我可能有我类(class)的对象 a1、a2、a3 共享同一个计数器。而b1、b2、b3共享不同的计数器。因此,当 a1、a2、a3 中的最后一个超出范围时,应该发生一些事情(与 a1、a2、a3 相关)。当 b1、b2、b3 中的最后一个超出范围时,应该发生一些事情(与 b1、b2、b3 相关)。
谢谢
最佳答案
一个简单的atomic<int>
应该足够了。我认为不需要任何更复杂的东西。
关于c++ - 引用计数(不存储任何数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20975017/