实现构件对象托管的方法和数据处理设备的制作方法

文档序号:6482596阅读:160来源:国知局
专利名称:实现构件对象托管的方法和数据处理设备的制作方法
技术领域
本发明涉及一种实现构件管控的方法和设备,特别是涉及一种实现构件对象托管 的方法和数据处理设备。
背景技术
随着计算机软件技术的不断发展,构件化软件技术已经越来越普及,各种各样的 构件技术和支持这些构件技术的相应的嵌入式操作系统也应运而生。目前,人们在利用构件化软件系统平台进行构件编程时,例如,在上海科泰世纪科 技有限公司开发的Elastos平台上进行构件编程时,通常引用计数管理构件对象的生命周 期,当不再使用一个构件对象时,需通过调用Release方法释放对该构件对象的引用。然 而,有的时候所使用的构件对象的生命周期要比当前线程还要长,甚至可能在整个程序的 运行过程中都需要访问它。如果创建这个构件对象的线程是进程的主线程,那么可以利用 “线程托管对象”的方式将构件对象托管到主线程上,因为主线程的生命周期与进程一样, 可以保证该构件对象一直有效。如果只是在一个普通线程上创建的构件对象,这时就比较 麻烦,可以将这个构件对象的指针传递给主线程,由其代为管理。虽然有上述这些手段能实 现构件对象的托管,但对用户来说上述这些手段都比较繁琐,如果要托管的构件对象很多, 不同的构件对象又可能由不同线程或者代码、甚至第三方的代码来创建的等,这些情况导 致上述这些手段操作起来更加复杂、更容易出错。

发明内容
鉴于以上内容,有必要提供一种实现构件对象托管的方法,以提高构件对象托管 效率和避免构件对象托管错误。此外,还有必要提供一种实现构件对象托管的数据处理设备,以提高构件对象托 管效率和避免构件对象托管错误。一种实现构件对象托管的方法,适用于能运行构件化软件系统的数据处理设备。 该方法包括步骤(a)定义构件对象的托管函数、自动释放全局托管对象函数及析构函数; (b)执行定义的托管函数将需托管的构件对象托管给进程;(c)执行定义的自动释放全局 托管对象函数,将被托管的构件对象的指针插入全局托管对象的托管对象链表;(d)等待 所托管的进程结束;(e)在所托管的进程结束时,定义的自动释放全局托管对象函数自动 释放全局托管对象,进入定义的析构函数;(f)执行定义的析构函数遍历全局托管对象的 托管对象链表,并调用所有被托管的构件对象对应的释放方法以释放所有被托管的构件对 象。—种实现构件对象托管的数据处理设备,该数据处理设备包括存储器及处理器。 该存储器用于存储构件化软件系统。该处理器用于运行存储的构件化软件系统中的构件对 象托管模块,以执行以下步骤(il)定义构件对象的托管函数、自动释放全局托管对象函 数及析构函数;( 2)执行定义的托管函数将需托管的构件对象托管给进程;( 3)执行定义
3的自动释放全局托管对象函数,将被托管的构件对象的指针插入全局托管对象的托管对象 链表;(i4)等待所托管的进程结束;(i5)在所托管的进程结束时,定义的自动释放全局托 管对象函数自动释放全局托管对象,进入定义的析构函数;(i6)执行定义的析构函数遍历 全局托管对象的托管对象链表,并调用所有被托管的构件对象对应的释放方法以释放所有 被托管的构件对象。相较现有技术,本发明通过在构件化软件系统中利用托管函数将构件对象托管给 进程,在所托管的进程结束时利用析构函数将被托管的构件对象整体释放,提高了构件对 象的托管效率,避免了构件对象的托管错误。


图1是本发明实现构件对象托管的数据处理设备较佳实施例的结构示意图。图2是本发明实现构件对象托管的方法较佳实施例的具体实施流程图。
具体实施例方式如图1所示,是本发明实现构件对象托管的数据处理设备较佳实施例的结构示意 图。该数据处理设备1可以是计算机、手机、个人数字助理(Personal Digital Assistant, PDA)等。该数据处理设备1包括处理器11及存储器(图中未示出)。该存储器用于存储 能实现构件对象托管的构件化软件系统10。该构件化软件系统10包括一个构件对象托管 模块100。该处理器11用于运行存储的构件化软件系统10中的构件对象托管模块100以 实现构件对象的托管。如图2所示,是本发明实现构件对象托管的方法较佳实施例的具体实施流程图。 该方法适用于图1所示的数据处理设备1。以下是结合本实施例逐步实现构件对象托管的内容,即该处理器11运行存储的 构件化软件系统10中的构件对象托管模块100逐步实现构件对象托管的内容。步骤S10,在为构件化软件系统10提供的函数构建界面中,定义构件对象的托管 函数、自动释放全局托管对象函数及析构函数,并执行定义的托管函数对需托管的构件对 象进行托管。于本实施例步骤SlO中,可以定义构件对象的托管函数如下ECode UserRoutine (…){CFoo New (&pFoo);............H省略其它不相关代码CObject ReleaseAtProcessExit (pFoo) ;// 将构件对象 CFoo 托管给进程...... }ECode ElastosMain (…){CThread: New(&UserRoutine,…);Return N0ERR0R ;
}在本实施例中,是以构件对象CFoo为例进行说明的;在本发明的其他实施例中, 其他构件对象的实施情况与CFoo实施情况相类似,因此,在不付出创造性劳动的情况下, 本技术领域的技术人员应当能够通过以CFoo为例的实施情况,轻易实现所有其他构件对 象基于本发明技术方案的实施情况。上面定义的构件对象托管函数对构件对象的托管原理说明如下首先,通过线程 函数UserRoutine创建一个构件对象CFoo ;接着,对创建的构件对象CFoo的回调事件进行 注册;接着,将创建的构件对象CFoo托管给进程,即CObject: ReleaseAtProcessExit (pFo ο);之后,继续其它操作,或者直接退出线程,不需再考虑构件对象CFoo的释放操作。当这 个进程退出时,会自动调用构件对象CFoo的Release方法。如果有多个构件对象需要被托 管时,可以反复调用上面定义的构件对象托管函数将构件对象托管给进程。于本实施例步骤SlO中,可以定义自动释放全局托管对象函数如下Class CAutoRelease{· · · }CAutoRelease g_autoRelease ;//进程空间的全局变量ECode CObject ReleaseAtProcessExit (PInterface pOb ject)//进行构件对象
托管实现的伪代码{g_autoRelease. GetList (&pList) ;//从进程的全局托管对象上获取托管对象链 表If (pList == NULL) {pList = new CList ;}pList-> Insert (pOb ject);将被托管的构件对象的指针插入全局托管对象的托 管对象链表return N0ERR0R ;}于本实施例步骤SlO中,可以定义析构函数如下CAutoRelease: CAutoRelease(){pList = m_pList- > FirstO ;While (pList) {//遍历托管对象链表,并释放被托管的构件对象pList- > GetCurrent(&p0bj);pObj- > ReleaseO ;pList = pList- > NextO ;}Delete m_pList ;}步骤S11,执行定义的自动释放全局托管对象函数,将被托管的构件对象的指针插入全局托管对象的托管对象链表。步骤S12,等待所托管的进程结束。步骤S13,在所托管的进程结束时,定义的自动释放全局托管对象函数自动释放全 局托管对象,进入定义的析构函数。步骤S15,执行定义的析构函数遍历全局托管对象的托管对象链表,并调用所有被 托管的构件对象对应的Release方法以释放所有被托管的构件对象。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参 照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明 的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
权利要求
一种实现构件对象托管的方法,适用于能运行构件化软件系统的数据处理设备,其特征在于,该方法包括步骤定义构件对象的托管函数、自动释放全局托管对象函数及析构函数;执行定义的托管函数,将需托管的构件对象托管给进程;执行定义的自动释放全局托管对象函数,将被托管的构件对象的指针插入全局托管对象的托管对象链表;等待所托管的进程结束;在所托管的进程结束时,定义的自动释放全局托管对象函数自动释放全局托管对象,进入定义的析构函数;及执行定义的析构函数遍历全局托管对象的托管对象链表,并调用所有被托管的构件对象对应的释放方法以释放所有被托管的构件对象。
2.如权利要求1所述的实现构件对象托管的方法,其特征在于,所述数据处理设备包 括计算机、手机、个人数字助理。
3.如权利要求1或2所述的实现构件对象托管的方法,其特征在于,所述构件化软件系 统是嵌入式操作系统。
4.如权利要求1或2所述的实现构件对象托管的方法,其特征在于,所述构件对象包括 基构件对象和派生构件对象。
5.如权利要求1或2所述的实现构件对象托管的方法,其特征在于,所述构件对象是 CFoo0
6. 一种实现构件对象托管的数据处理设备,其特征在于,该数据处理设备包括 存储器,用于存储构件化软件系统;处理器,用于运行存储的构件化软件系统中的构件对象托管模块,以执行以下步骤 定义构件对象的托管函数、自动释放全局托管对象函数及析构函数; 执行定义的托管函数,将需托管的构件对象托管给进程;执行定义的自动释放全局托管对象函数,将被托管的构件对象的指针插入全局托管对 象的托管对象链表;等待所托管的进程结束;在所托管的进程结束时,定义的自动释放全局托管对象函数自动释放全局托管对象, 进入定义的析构函数;及执行定义的析构函数遍历全局托管对象的托管对象链表,并调用所有被托管的构件对 象对应的释放方法以释放所有被托管的构件对象。
7.如权利要求6所述的实现构件对象托管的数据处理设备,其特征在于,所述数据处 理设备包括计算机、手机、个人数字助理。
8.如权利要求6或7所述的实现构件对象托管的数据处理设备,其特征在于,所述构件 化软件系统是嵌入式操作系统。
9.如权利要求6或7所述的实现构件对象托管的数据处理设备,其特征在于,所述构件 对象包括基构件对象和派生构件对象。
10.如权利要求6或7所述的实现构件对象托管的数据处理设备,其特征在于,所述构 件对象是CFoo。
全文摘要
本发明提供一种实现构件对象托管的方法,该方法通过在构件化软件系统中利用托管函数将构件对象托管给进程,在所托管的进程结束时利用析构函数将被托管的构件对象整体释放,提高了构件对象的托管效率,避免了构件对象的托管错误。本发明还提供一种实现构件对象托管的数据处理设备。
文档编号G06F9/44GK101882068SQ20091005088
公开日2010年11月10日 申请日期2009年5月8日 优先权日2009年5月8日
发明者宋世军, 陈榕 申请人:上海科泰世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1