ACE学习手记-----智能指针(ACE_Intrusive_Auto_Ptr)
来源:互联网 发布:网络安全工程师好学吗 编辑:程序博客网 时间:2024/05/20 02:28
前面一篇写了智能指针,重点介绍了ACE_Auto_Ptr<X>和ACE_Refcounted_Auto_Ptr<X> 两个智能指针的使用,以及他们的不同点。当时对ACE_Intrusive_Auto_Ptr<X>指针还没有深入的了解、也不知道ACE_Intrusive_Auto_Ptr<X>智能指针的用途是什么?
ACE_Intrusive_Auto_Ptr<X>和ACE_Refcounted_Auto_Ptr<X> 有点类似,都是基于引用计数的。也会实现X对象的自动删除释放功能。大体他们2个类实现的功能,从我们使用的角度来说应该是一样的、从表面上看确实是一样,在使用过程中没有多大的区别。
ACE_Intrusive_Auto_Ptr<X>与ACE_Refcounted_Auto_Ptr<X> 唯一不同的地方在于引用计数的方式:
ACE_Refcounted_Auto_Ptr<X> 是由 ACE_Refcounted_Auto_Ptr<X> 自己来实现引用计数、管理X对象的生命期。
ACE_Intrusive_Auto_Ptr<X> 并不是由自己实现引用计数,而是由由X对象自己实现引用技术,自己来管理X对象的生命期。但是X类需要提供intrusive_add_ref和intrusive_remove_ref两个静态函数来增加和减少X对象的引用技术。
何时使用ACE_Intrusive_Auto_Ptr<X>或者ACE_Refcounted_Auto_Ptr<X> 来管理X对象的指针。我想这个应该没有一个统一的规律。关键还是要根据程序因地制宜。一般情况下我们会优先选择ACE_Refcounted_Auto_Ptr<X> ,因为使用起来简单,我们只需要关注X对象的业务上面的实现,而不用去管理实现X对象的生命期。既然ACE_Refcounted_Auto_Ptr<X> 已经功能这么强大而且满足我们的需求了,那么我们为什么还需要ACE_Intrusive_Auto_Ptr<X>它呢?因为ACE_Intrusive_Auto_Ptr<X>能够让我们提供更加细粒度的管理X对象指针的能力。很多情况下ACE_Refcounted_Auto_Ptr<X> 都是在引用技术为0的时候直接删除X对象。而是使用了ACE_Intrusive_Auto_Ptr<X>以后,在X对象引用技术为0的时候,如何处理对象,那就是我们能够控制的能力了。
总结:ACE_Intrusive_Auto_Ptr<X>使用起来虽然复杂一些,但是他能够提供更加透明的、细粒度的X对象生命期的控制能力。
ACE_Refcounted_Auto_Ptr<X> 使用简单,对X对象的控制能力我们无需干涉、也无法干涉,除非你自己去修改ACE源码。
- ACE学习手记-----智能指针(ACE_Intrusive_Auto_Ptr)
- ACE学习手记-----智能指针(ACE_Intrusive_Auto_Ptr)
- ACE学习手记--- 智能指针(ACE_Auto_Ptr / ACE_Refcounted_Auto_Ptr)
- ACE中智能指针
- ACE 智能指针
- ace 学习手记 20050829
- ACE学习手记-----ACE_Log_Msg
- ACE学习手记-----ACE_Log_Msg
- ACE笔记(8) -ACE智能指针
- ACE学习手记----ACE_INET_Addr类
- ACE学习手记 -----关于 ACE_CDR
- ACE笔记(8)-ACE智能指针
- 智能指针:boost学习
- 智能指针学习
- C++ 智能指针学习
- Qt 智能指针学习
- Boost智能指针学习
- 智能指针学习
- 北大2260题
- strcmp() 函数
- 求图书管理系统 源代码,和界面
- 解决CentOS中文乱码
- strcoll() 函数
- ACE学习手记-----智能指针(ACE_Intrusive_Auto_Ptr)
- CCSP 学习笔记
- strcpy() 函数
- 微软表示Windows 7将直接在CPU上跑DirectX 10
- Platform Builder学习手册(从零开始)
- greybox高级用法
- 手机电视依靠订阅收费难盈利
- CONST的用法
- 如何让shell检测必须输入一个整数值?