浅析 RefCounted 和 WeakPtr:Chromium Base 篇
序言请移步此处
MSVC STL 的分析版本请移步此处
Libstdc++ 的分析版本请移步此处
Boost 的分析版本请移步此处
注 1:因为这不是第一篇分析,所以会直入主题,跳过文学写作常用的累赘的过渡。
注 2:这是系列最后一篇。
目标版本选择
Chromium tag 68.0.3421.1
代码位置:base/memory/ref_counted.{h, cc}
RefCountedBase 和 RefCounted
两个类实现了非线程安全的引用计数,即:内部计数使用的是 built-in integer
先看看 RefCountedBase
的大致结构:
1 | class RefCountedBase { |
可以看出核心 ref_count_
类型是 uint32_t
ctor 和 dtor 都被定义为 protected,说明这类使用做基类;同时提供了 AddRef()
和 Release()
,进行内部的计数增减。