Nebula中的RefCount类
来源:互联网 发布:js判断是否为空对象 编辑:程序博客网 时间:2024/06/05 16:01
RefCount类用为Nebula整个架构中的基类。
由以下几个方面构成。
1、Reference Count相关,主要管理引用计数相关,有个volatile int refCount的变量负责记录当前对象被引用次数,通过AddRef , Release等方法改变其值,当refCount变量为0时,会被自动释放掉。还有refCount值的改变是线程安全的.可以调用window的_InterlockedIncrement,_InterlockedDecrement等函数来完成。
2、RTTI相关
主要由InstanceOf()和IsA()函数来负责。
Nebula中每个类在声明的时候都会加上一个_DeclareClass(type)宏,在这个宏中,会自动为每个类加上一个static Core::Rtti 类型的变量,这个变量就标识了该类的类别信息。这个变量的初始化会在_ImplementClass宏中自动被填充。
一个RTTI中包含Util::String型的类名,以及它的父类的RTTI对象的指针,一个FourCC类型的类名(FourCC其实就是一个uint型的标志,全局必须唯一),一个创建该类的函数指针,以及该类的size信息。这些信息都是是在类的h文件与cpp文件中通过_DelcareClass与_ImplementClass宏初始化的。
在RTTI对象初始化时,不仅要保存相关信息,而且还要在全局的Factory类中注册类名,fourcc与对应的Rtti *指针
整个Nebula架构中的RTTI功能都是由各个类的Rtti 对象来负责,由于Rtti中保存了整个nebula的树列表,故实现isInstanceOf与IsDerivedFrom等都很容易了
3、统计信息相关
由于Refcount是整个类层次的基类,所以在这里加入了一些debug相关的信息。比如记录全局对象列表等等。
PS:每个类在声明的时候都有_DeclareClass,实现的时候有_ImplementClass宏,这两个宏可是作了不少事情的。
1、声明了这个类的静态RTTI对象,并初始化之。
2、重载了new , delete操作符
3、声明了类的Creator函数,类的实例都通过调用Creator函数来分配内存,分配内存的同时,通过重载的new与delete来使用特定的内存分配器。在Creator中,还可以管理线程同步。
4、声明判断类工厂是否已经注册的函数。
- Nebula中的RefCount类
- Nebula中的智能指针
- Nebula中的StringAtom
- Nebula
- memcached refcount
- nebula 0
- Nebula level00
- Nebula level01
- Nebula level02
- Nebula level04
- Nebula level03
- Nebula level05
- Nebula level06
- Nebula level07
- Nebula level08
- Nebula level09
- Nebula level10
- Nebula level11
- asp.net动态生成控件及访问控件
- esx 设置时区 + 时间同步批处理
- progress进度条控件的使用
- windows有意思的con输出
- Weblogic在MyEclipse的配置
- Nebula中的RefCount类
- C# :DataGridView中使按下Enter键达到与按下Tab键一样的效果
- 优秀程序员的45个习惯
- ETL工具介绍
- 如何用代码实现textbox换行
- 如何重定向域控制器的活动目录数据库
- 小虎队
- Delphi版 关于QQ输入控件无法Spy到句柄的实现方案可行性研究
- 第一次使用ADO.NET