美文网首页WebRTC
WebRTC中的引用计数指针scoped_refptr

WebRTC中的引用计数指针scoped_refptr

作者: cx7 | 来源:发表于2019-03-12 00:24 被阅读112次

WebRTC为了避免使用C++11(截止68版本),没有使用std::shared_ptr,造了一个scoped_refptr的轮子来替代.

scoped_refptr(rtc_base/scoped_ref_ptr.h)实现计数指针

template <class T>
class scoped_refptr {
......
};
  1. 和常造的shared_ptr的轮子在原理上类似,都是利用C++析构函数,判断引用计数情况.适时释放持有的资源.
  2. 不同之处在于scoped_refptr把引用计数留给了资源对象来实现
节选部分实现 : 
...
scoped_refptr(const scoped_refptr<T>& r) : ptr_(r.ptr_) {
    if (ptr_)
      ptr_->AddRef();
  }

~scoped_refptr() {
    if (ptr_)
      ptr_->Release();
  }
...
protected:
  T* ptr_;

持有的对象 在AddRef和Release接口中实现计数

举例此类对象 : RefCountedBase(api/refcountedbase.h)
AddRef增加引用,Release判断引用计数,作出资源释放.

class RefCountedBase {
 public:
  RefCountedBase() = default;

  void AddRef() const { ref_count_.IncRef(); }
  RefCountReleaseStatus Release() const {
    const auto status = ref_count_.DecRef();
    if (status == RefCountReleaseStatus::kDroppedLastRef) {
      delete this;
    }
    return status;
  }

 protected:
  virtual ~RefCountedBase() = default;

 private:
  mutable webrtc::webrtc_impl::RefCounter ref_count_{0};

  RTC_DISALLOW_COPY_AND_ASSIGN(RefCountedBase);
};

相关文章

  • WebRTC中的引用计数指针scoped_refptr

    WebRTC为了避免使用C++11(截止68版本),没有使用std::shared_ptr,造了一个scoped_...

  • WebRTC源码分析——引用计数及scoped_refptr智能

    本文转载自https://blog.csdn.net/ice_ly000/article/details/1056...

  • 引用计数与ARC

    一、引用计数原理引用计数就是表示多少个指针指向这个对象,当新的指针指向该对象时引用计数加1,当指针不再指向该对象时...

  • ios-ARC下内存关键字深入理解

    提到内存关键字就不得提到引用计数原则,和野指针。 在ARC中,对象的释放是遵循引用计数原则的,所谓引用计数原则实际...

  • 【C++】智能指针类和OpenCV的Ptr模板类

    智能指针类 引用计数 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference ...

  • 内存管理 - 引用计数 weak指针

    引用计数的存储 在64bit中,引用计数可以直接存储在优化过的isa指针中,也可能存储在SideTable类中 r...

  • weak实现原理

    weak弱引用,修饰的对象引用计数不会+1,在引用计数为0时,把指针置为nil,避免野指针。通常用来修饰deleg...

  • C++智能指针

    引用计数技术及智能指针的简单实现 基础对象类 辅助类 智能指针类 使用测试 参考: C++ 引用计数技术及智能指针...

  • iOS的内存管理

    一、引用计数值存储位置 OC对象的引用计数值存储在对象的isa指针中,isa的结构如下: 如果has_sideta...

  • ios内存管理

    ios采用引用计数管理对象的生命周期,开启指针优化后对象的引用计数器可能存在于isa结构体中, CADisplay...

网友评论

    本文标题:WebRTC中的引用计数指针scoped_refptr

    本文链接:https://www.haomeiwen.com/subject/zfpipqtx.html