boost shared_ptr线程安全性
2014-08-20 18:29
225 查看
转 http://blog.csdn.net/jiangfuqiang/article/details/8292906
1 同一个shared_ptr对象可以被多线程读
2 多个shared_ptr对象、但指向同一raw_pointer的, shared_ptr本身可以被多线程读写; 但是底层指针指向的对象的多线程安全性无任何保证。
3 多线程同时读写同一个shared_ptr对象时, 使用atomic_load/store/exchange, 这些函数见smart_ptr/shared_ptr.hpp。 否则是不安全的。
我见过最清楚的分析了。 第1、2点本身我很清楚; 第3点让我能避免一些错误、即便这个错误出现的几率非常非常小。
目前的几个服务端程序中, 多线程可能同时读写一个shared_ptr对象时, 都是直接赋值(读) 或者reset(写)的; 虽然也一直没出现过异常。
1 同一个shared_ptr对象可以被多线程读
2 多个shared_ptr对象、但指向同一raw_pointer的, shared_ptr本身可以被多线程读写; 但是底层指针指向的对象的多线程安全性无任何保证。
3 多线程同时读写同一个shared_ptr对象时, 使用atomic_load/store/exchange, 这些函数见smart_ptr/shared_ptr.hpp。 否则是不安全的。
我见过最清楚的分析了。 第1、2点本身我很清楚; 第3点让我能避免一些错误、即便这个错误出现的几率非常非常小。
目前的几个服务端程序中, 多线程可能同时读写一个shared_ptr对象时, 都是直接赋值(读) 或者reset(写)的; 虽然也一直没出现过异常。
相关文章推荐
- boost::shared_ptr的线程安全性
- boost::shared_ptr的线程安全性
- boost的shared_ptr循环引用(1)
- 关于boost中shared_ptr使用方法的一些例子
- 理解 boost::shared_ptr 中所谓的循环引用是如何形成的
- 关于boost的shared_ptr以及weak_ptr的研究
- boost::weak_ptr和enable_shared_from_this
- [zz]使用boost::shared_ptr的注意条款
- boost::shared_ptr的使用方法
- [置顶] 从零开始学C++之boost库(一):详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
- boost shared_ptr的注意事项记录
- boost smart_prt 4-> shared_ptr
- boost中的智能指针shared_ptr的指针管理
- [置顶] 从零开始学C++之boost库(一):详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
- boost::shared_ptr 分析与实现
- 【转发】boost::shared_ptr 分析与实现
- shared_ptr线程安全性分析
- boost::shared_ptr的使用方法
- 【Boost】boost库中智能指针——shared_ptr
- (笔记)为何boost中boost::shared_ptr 循环引用会导致引用计数机制失效