我正在开发一个多线程程序,但有一个 UI 组件广泛使用 std::shared_ptr 来管理元素。我可以保证只有一个线程会使用这些 shared_ptrs。
有没有一种方法可以定义一个不会产生线程安全引用计数开销的 shared_ptr?
它可以基于 boost::shared_ptr 或 std::shared_ptr。
编辑:感谢提到 intrusive_ptr 的回答。我忘了提到我还需要 weak_ptr 功能,所以排除了它。
更新:我的答案是使用 Boost 中的 local_shared_ptr。查看来自“他漫步”的评论
最佳答案
Andrei Alexandrescu 在 CppCon 2014 上谈到实现您自己的单线程共享指针类(带有一些额外的优化)
观看视频 here
和幻灯片 here
我真的认为标准或 boost 应该提供一个模板参数,以便在它们的共享指针中使用原子引用计数......
关于c++ - 创建一个非线程安全的 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6593770/