c++ - 引用计数(不存储任何数据)

标签 c++ c++11 shared-ptr reference-counting

我需要在我的类(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/

相关文章:

c++ - Singleton 类中的初始化和清理

c++ - 使运算符重载上下文特定

c++ - COLORREF 和 D2D1::ColorF 之间的转换

c++ - 如何使用通用模板函数来处理具有不同成员的对象?

C++0x - 导出已消失,异常规范已弃用。这会影响你的代码吗?

c++ - 所有shared_ptr都引用我的 vector 中的同一个指针

c# - 使用 DLLImport 导入对象

c++ - 实现智能指针时引用链接相对于引用计数的优势?

c++ - shared_ptr 对象的析构函数从未被调用

c++ - 写入序列号流 `operator>>`?