COM笔记(生存周期控制)
来源:互联网 发布:js冒泡排序算法 编辑:程序博客网 时间:2024/06/01 19:11
IUnknown接口实现生存周期控制的方法。每一个对象都记录了一个成为“引用计数”的数值,该数值的含义为
有多少个有效指针的引用该COM对象。当客户得到了一个指向该对象的接口指针时,引用计数增加1;当客户用完接口指针时
,引用计数减一。当引用计数为0的时候COM对象就应该把自己从内存中清除掉,也就是调用清除函数;
引用计数的实现有三个层次。按照COM的规范一个COM组件可以实现多COM对象。并且每个对象又可以支持对歌COM接口
,可以选择在COM组件一级实现计数引用,也可以在COM对象实现引用计数,甚至可以为对象的每个接口设置一个引用计数。
组件一级引用计数,只需要实现组件时,用一个全局帧数变量记录引用计数值,当组件被初始化装入内存时
该计数值为0,当有组件被创建是增加,在整个组件被使用过程中计数值一直保持大于0,当组件中的所有对象都被用完之后,计数值应该减回到0,于是组件就可以从内存中取出。
对象一级和接口一级的引用计数实现和组件一级引用计数的实现方法类似,不同指出在于,这里分别为对象和接口设置引用计数变量,在组件的一级实现引用计数
引用计数变量自然可以选择全局变量;在对象一级实现引用计数,可以使用c++类的成员变量,在接口一级实现引用计数,可以为实现的每一个接口设置一个类成员变量最为引用计数变量。
这三种引用计数的实现层次各有优缺点,组件的一级引用计数实现简单,但它仅能控制模块的生存期,无法判断组件中的某个对象是否已经被使用完,
只有等组件的所有对象都被是使用完后,所有的的对象才能被一起释放。这样做自然降低了系统资源的利用率。接口一级实现引用计数可以控制每个接口的生存期,
只要某一接口不再被使用就可以被释放,这种类型的资源利用率最高,但实现最为复杂。而对象的一级引用计数具有折中效果所以比较合理的方案是采用对象一级的引用计数
以便控制对象和组件的生存周期。
- COM笔记(生存周期控制)
- 【web开发学习笔记】Servlet生存周期
- 「Redis学习笔记」生存周期
- 作用域生存周期理解笔记
- ASP.NET页面生存周期(理论)
- 软件工程(四)——生存周期
- JAVA自学笔记(二):类生存周期及访问权限
- [Android新手学习笔记27]-Fragment碎片生存周期
- 页面生存周期
- 软件生存周期
- .net页面生存周期
- aspx页面生存周期
- 页面的生存周期
- 页面的生存周期
- 页面的生存周期
- 页面生存周期
- 生存周期中的指针
- 组件生存周期
- linux进程间通信
- Linux内存管理(一)
- Linux系统Java程序性能调优
- Services in Oracle Database 10g
- C#WebService下载文件
- COM笔记(生存周期控制)
- Boost在VS2008下的正确编译
- 关于php加密算法,可以用于COOKIE加密等
- AWK常用命令华(1)
- Linux内存管理(二)
- 内核版本号
- 简单对比微软WorkFlow3.5与4.0的差异
- 说话之道七
- 解压和生成ramdisk-root.img工具脚本