标签:
官方的解释总是最权威,有疑问看这里或者直接看代码中的说明: bind_helpers.h.
传值方式 | 描述 |
---|---|
this 或 对象指针 | 如果对象本身是一个RefCountedThreadSafe, 没有问题. 如果是个裸指针,应当尽量避免,除非你可以保证它的线程安全. |
base::Unretained | 注意:使用这个的前提是有其它同步机制保障对象的生命周期.
|
base::Owned | 如果是临时对象,或者担心任务执行完成后对象可能出现泄露,可以使用Owned, 表示由Task 持有对象的所有权,在结束时析构它. |
base::Passed | 如果要执行Task需要传入scoped指针,就可以使用它转换,它也可以避免拷贝,而是类似move语义. |
base::ConstRef | 类似常量引用,不希望bind过程出现拷贝,就可以使用它. |
base::IgnoreResult | 如果Task要调用的方法带有返回值,而你又不关心返回值就可以使用IgnoreResult来传入对象指针. |
如果这样一直将以引用计数来使用对象岂不最为简单,为什么要避免引用计数?
Chromium智能指针指引中的解释:
还可以参考: 谨慎使用智能指针.
标签:
原文地址:http://blog.csdn.net/horkychen/article/details/50486086