`

Ice智能指针源码分析

阅读更多
Ice的智能指针采用对象继承IceUtil::Shared,指针通过IceUtil::Handle模板来实现。


初步研究了一下,在Shared中增加了一个计数器,用于累计对象被使用的次数,当计数器为零时,调用对象的析构函数。

[code="cpp"]    void __incRef()
    {
        assert(_ref >= 0);
        ++_ref;
    }

    void __decRef()
    {
        assert(_ref > 0);
        if(--_ref == 0)
        {
            if(!_noDelete)
            {
                _noDelete = true;
                delete this;
            }
        }
    }


在模板类 Handle中的实现了操作计数器的方法
   Handle(const Handle& r)
    {
        this->_ptr = r._ptr;

        if(this->_ptr)
        {
            this->_ptr->__incRef();
        }
    }

    ~Handle()
    {
        if(this->_ptr)
        {
            this->_ptr->__decRef();
        }
    }


分享到:
评论

相关推荐

    ice异步模式源码实例

    标题"ice异步模式源码实例"指的是通过C++在Linux环境下使用ICE框架实现AMD和AMI模式的服务端和客户端,以便进行双向通信。这种通信方式允许服务端和客户端同时处理多个请求,提高系统的响应速度和效率。 描述中的...

    VC+ICE服务端实现源码

    【VC+ICE服务端实现源码】是一个关于使用C++编程语言和ThrustSoft的ICE(Internet Communication Engine)中间件来构建服务器端...通过学习和分析这个项目,开发者可以深化对ICE中间件的理解,提升服务端开发的能力。

    ice源码(Ice-3.4.1.tar.gz)

    通过深入分析ICE 3.4.1的源码,开发者不仅可以了解其工作原理,还能学习到分布式系统设计的最佳实践,提升自己在分布式计算领域的专业技能。同时,对于那些希望定制ICE或扩展其功能的开发者来说,源码分析更是不可或...

    ICE104规约Java解析源码

    总的来说,ICE104Java解析源码是电力自动化系统中的关键组件,它使得Java程序员能够利用标准的ICE104协议进行数据交换,从而实现对电力设备的智能监控和管理。通过深入研究和理解这些源码,我们可以更好地掌握ICE104...

    ICE-3.7.1最新源码

    这个压缩包包含了ICE的源码,供开发者进行深入研究和定制。 首先,ICE-3.7.1的核心特性包括: 1. **多语言支持**:ICE支持多种编程语言,如Java、C#、Python和JavaScript,这使得它能够在不同语言环境中无缝集成,...

    ICE186_ICE186_源码

    - **内存模型**:通过源码分析,我们可以看到ICE186如何构建和管理虚拟内存,以模拟真实的80186内存环境。 总之,ICE186源码不仅揭示了80186处理器的内部工作机制,还为我们提供了调试工具设计的宝贵参考。对于硬件...

    zeroc Ice c# 的源码

    标题中提到的"zeroc Ice c# 的源码",意味着我们将探讨zeroc Ice在C#平台上的实现细节。源码通常包含了库的核心功能,如序列化、网络通信、多线程处理以及错误处理等模块。通过阅读和理解源码,开发者可以深入学习...

    ice-3.7.zip 源码

    《Ice框架源码解析——ice-3.7.zip深度探究》 Ice,全称为ZeroC Ice,是一款跨平台、高性能的分布式对象中间件,它提供了一种轻量级的、面向服务架构(SOA)的解决方案。这个名为“ice-3.7.zip”的压缩包包含了Ice...

    易语言ICE音乐播放器源码

    通过分析源码,我们可以深入理解易语言的基本语法结构,包括变量定义、函数调用、条件判断、循环控制等。 2. **音频处理**:音乐播放器的核心是音频处理技术。易语言提供了相关的API或库,用于加载音频文件、解码...

    zeroc-ice 3.7.4源码.rar

    zeroc-ice 3.7.4源码.rar 压缩包中有 ice-3.7.4 ice-demos-3.7.4 Ice.framework3.7.4 freeze-3.7.4 IceBuilder ice-builder-gradle-1.4.7 ice-builder-visualstudio-6.0.0 ice-builder-xcode-3.1.0 源码包 ...

    ZeroC Ice 3.7.3 源码与中文教程.rar

    Ice 是一种面向对象的中间件平台。从根本上说,这意味着 Ice 为构建面 向对象的客户-服务器应用提供了工具、 API 和库支持。 Ice 应用适合在异 种环境中使用:客户...无论 部署环境如何,这些应用的源码都是可移植的。

    易语言源码易语言ICE音乐播放器源码.rar

    《易语言ICE音乐播放器源码解析》 易语言,作为一种独特的编程语言,以其简洁的语法和面向初学者的设计理念,深受广大编程爱好者的喜爱。本文将深入探讨易语言ICE音乐播放器源码,帮助读者理解其工作原理,并从中...

    ICE异步调用Demo源码

    这个“ICE异步调用Demo源码”是针对ICE框架的一个示例,展示了如何在C++环境中实现异步调用功能,特别是 adm 和 ami 函数的调用与异步分发。以下将详细解析这个Demo中的关键知识点: 1. **ICE框架**:ICE由ZeroC...

    Ice-3.7.0 下载地址、安装及源码

    Ice Ice-3.7.0 linux windows mac os docker java js python ruby source Download Ice 3.7 Version: 3.7.0 - July 21, 2017 You are licensing Ice under GPLv2 unless you purchase a commercial license.

    ice.rar_ice matlab_ice.m matlab_matlab ice_matlab ice_matlab i

    《冈萨雷斯数字图像处理MATLAB版源码:ICE源码解析》 在计算机科学领域,数字图像处理是一项至关重要的技术,广泛应用于医学影像、遥感、机器视觉等多个领域。MATLAB作为强大的数学计算和数据分析工具,是进行图像...

    分布式编译icecream源码

    调度服务器负责接收编译任务,分析任务需求,然后根据客户端的负载情况将任务分配给最合适的节点。客户端则是执行实际编译工作的机器,它们可以是开发者本地的开发机,也可以是网络上的任何闲置计算机,只要安装了...

    zeroc ice教程 ice环境配置 Ice中文教程 C++ ICE java ICE ICE入门 ice基础教程 ice开发文档

    在环境配置方面,文档提供了Ice源码包及其依赖项的安装指导,包括如何下载和编译这些源码包。依赖项包括BerkeleyDB、bzip2/libbzip2、The OpenSSL Toolkit、SSLeay和Expat等。需要注意的是,这些第三方产品的授权...

    Zero Ice 3.6源码

    "Zero Ice 3.6源码" 是ZEROC公司提供的一个开源通信协议软件的源代码版本,其核心组件称为ICE(Internet Communications Engine),意即互联网通信引擎。ICE作为一个面向对象的中间件,旨在简化分布式系统开发,提供...

    ice3.4.1源码

    一款专业的网络通讯软件,可与Microsoft的WCF相媲美的RPC调用过程,如果你不满足于Microsoft德框架结构这是一个不错的选择

Global site tag (gtag.js) - Google Analytics