在 Chromium 的多线程异步编程中,合理管理对象生命周期非常关键。本文深入介绍 base::RefCountedThreadSafe 和 base::WeakPtr 的组合使用方法,并通过示例分析其使用要点及易踩的坑。
🌱 基础概念回顾
1. RefCountedThreadSafe<T>
-
是 Chromium 中线程安全的引用计数基类,用于实现对象的自动释放。
-
常和
scoped_refptr<T>配合使用,确保对象在所有引用释放后自动析构。 -
使用方式:
class MyObject : public base::RefCountedThreadSafe<MyObject> { public: void DoSomething(); private: friend class base::RefCountedThreadSafe<MyObject>; ~MyObject(); // 析构必须是 private 或 protected };
2. WrapRefCounted
-
用于在已有裸指针(如
this)的场景下安全构造scoped_refptr。scoped_refptr<MyObject> ptr = base::WrapRefCounted(this);
🧪 示例代码:结合 RefCountedThreadSafe 与异步调用
class MyTaskRunner : public base::RefCountedThreadSafe<MyTaskRunne

最低0.47元/天 解锁文章
2690

被折叠的 条评论
为什么被折叠?



