一种动态回收资源的方法及系统的制作方法

文档序号:9326746阅读:333来源:国知局
一种动态回收资源的方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种动态回收资源的方法及系统。
【背景技术】
[0002]多线程是一种非常〃节俭〃的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种〃昂贵〃的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分资源,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。而且,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
[0003]此外,多线程程序作为一种多任务、并发的工作方式,具有以下的优点:
[0004]I)提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程,可以避免这种觸尬的情况。
[0005]2)使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
[0006]3)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。
[0007]但是,Linux系统下的多线程的程序中,各种资源存在竞争关系,当一个线程占有某个资源的时候,其他资源不能拥有该资源,如果想要拥有通常要等待该资源被释放。当系统中某个线程需要对某些资源进行删除时,该资源可能正在被其他线程使用,导致该资源无法删除,该线程一直等待资源释放,这实际上造成了浪费。

【发明内容】

[0008]针对现有技术方案存在的问题和不足,本发明提供了一种动态回收资源的方法及系统,可以最大限度的减少资源冲突和浪费,避免了资源被某个线程误删除对其他线程带来的访问风险。
[0009]根据本发明的一个方面,提供了一种动态回收资源的方法,该方法包括:
[0010]创建共享资源的active链表和inactive链表;
[0011]创建资源回收线程,并将所述共享资源的删除接口注册到所述资源回收线程;
[0012]当某一线程删除所述共享资源时,将所述共享资源从active链表移动到inactive链表中,并向所述资源回收线程发送通知消息;
[0013]在所述资源回收线程接收到所述通知消息后,通过所述资源回收线程对所述inactive链表中的共享资源进行删除。
[0014]其中,在所述资源回收线程接收到所述通知消息后,通过所述资源回收线程对所述inactive链表中的共享资源进行删除,包括:
[0015]判断所述inactive链表中的共享资源当前是否处于执行状态;
[0016]当所述共享资源当前处于非执行状态,则通过所述资源回收线程直接删除所述共早资源;
[0017]当所述共享资源当前处于执行状态,则重新将所述共享资源的删除接口注册到所述资源回收线程,以使所述资源回收线程实时监测所述共享资源的执行状态。
[0018]其中,所述方法还包括:
[0019]当所述资源回收线程监测到所述共享资源执行完毕后,通过所述资源回收线程删除所述共享资源。
[0020]其中,所述共享资源的非执行状态包括:
[0021 ] 共享资源还没有执行和共享资源已经执行完毕两种状态。
[0022]其中,将所述共享资源从active链表移动到inactive链表中之后,所述方法还包括:
[0023]周期性地检测所述共享资源是否到达所述inactive链表中。
[0024]其中,所述创建共享资源的active链表和inactive链表的步骤和所述创建资源回收线程的步骤是在系统初始化时执行的。
[0025]根据本发明的另一个方面,提供了一种动态回收资源的系统,该系统包括:
[0026]链表构建模块,用于创建共享资源的active链表和inactive链表;
[0027]回收线程构建模块,用于创建资源回收线程,并将所述共享资源的删除接口注册到所述资源回收线程;
[0028]链表删除模块,用于当某一线程删除所述共享资源时,将所述共享资源从active链表移动到inactive链表中,并向所述资源回收线程发送通知消息;
[0029]处理模块,用于在所述资源回收线程接收到所述通知消息后,通过所述资源回收线程对所述inactive链表中的共享资源进行删除。
[0030]其中,所述处理模块包括:
[0031]判断单元,用于判断所述inactive链表中的共享资源当前是否处于执行状态;
[0032]处理单元,用于当所述判断单元的判断结果为共享资源当前处于非执行状态时,通过所述资源回收线程直接删除所述共享资源;
[0033]所述链表删除模块,还用于当所述判断单元的判断结果为共享资源当前处于执行状态时,重新将所述共享资源的删除接口注册到所述资源回收线程,以使所述处理单元通过资源回收线程实时监测所述共享资源的执行状态;
[0034]所述处理单元,还用于当所述资源回收线程监测到所述共享资源执行完毕后,通过所述资源回收线程删除所述共享资源。
[0035]其中,所述系统还包括:
[0036]检测模块,用于在所述链表删除模块将所述共享资源从active链表移动到inactive链表中之后,周期性地检测所述共享资源是否到达所述inactive链表中。
[0037]其中,所述链表构建模块,具体用于在系统初始化时,创建共享资源的active链表和inactive链表;
[0038]回收线程构建模块,具体用于在系统初始化时,创建资源回收线程,并将所述共享资源的删除接口注册到所述资源回收线程。
[0039]本发明的有益效果为:
[0040]本发明提供的动态回收资源的方法及系统,在整个资源管理过程中,不需要其他具体功能的线程参与,这些线程在删除共享资源时不需要等待,可以继续做其他关键的事情,同时由于为共享资源构建了 active和inactive两个链表,且删除任务是由一个线程来做的,可以最大限度的减少资源冲突,避免了资源被某个线程误删除给其他线程带来的访问风险。
[0041]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0042]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0043]图1为本发明实施例提出的一种动态回收资源的方法的流程图;
[0044]图2为本发明实施例提出的一种动态回收资源的系统的结构框图。
【具体实施方式】
[0045]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1