c++ - 创建一个非线程安全的 shared_ptr

标签 c++ boost stl

我正在开发一个多线程程序,但有一个 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/

相关文章:

c++ - 在 C++ 中是否有替代 dynamic_cast 的方法?

c++ - 发送字符串时 boost 消息队列崩溃

c++ - VS 启动程序时 WriteFile 行为不同

c++ - 来自可变参数模板的固定数量的模板参数

c++ - 在 Code::Blocks with Dependencies 中编译

c++ - boost::shared_ptr 中的 ref_count

algorithm - 如何动态查找连通分量

c++ - STL 优先队列 : When/How Does Resorting Occur?

c++ - 如何从对象中获取STL容器的类型?

c++ - 如何将 vector<string> 转换为 vector<char*>