当前位置:   article > 正文

std:shared_ptr源码解读_std::shared_ptr multi thread

std::shared_ptr multi thread

之前没阅读shared_ptr的代码,对它仅有的印象就是它是线程安全的。最近突然有同事告知,其他它不是线程安全的。于是,阅读分析了下源码。

源码中都是满满的模板类

shared_ptr<_Tp>继承自__shared_ptr<_Tp>,其功能主要由父类__shared_ptr 实现。

__shared_ptr 中有两个模板定义的类型,第一个 Tp 就是 智能指针想保存的对象的类型。第二个Lp是加锁的策略 _Lock_policy,有三种策略:

  // Available locking policies:
  // _S_single    single-threaded code that doesn't need to be locked.
  // _S_mutex     multi-threaded code that requires additional support
  //              from gthr.h or abstraction layers in concurrence.h.
  // _S_atomic    multi-threaded code using atomic operations.

默认使用 shared_ptr时,是没有传入这个策略的。这个策略的指定,是在编译期间,根据编译参数自行选择。

  // Compile time constant that indicates

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/206291
推荐阅读
相关标签
  

闽ICP备14008679号