[发明专利]多线程文件遍历技术有效
申请号: | 200910020370.0 | 申请日: | 2009-04-23 |
公开(公告)号: | CN101526948A | 公开(公告)日: | 2009-09-09 |
发明(设计)人: | 刘江宁;黄三伟;刘宗福;刘春;石磊;刘毅枫 | 申请(专利权)人: | 山东中创软件商用中间件股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F9/38 |
代理公司: | 济南舜源专利事务所有限公司 | 代理人: | 苗 峻 |
地址: | 250014山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多线程 文件 遍历 技术 | ||
技术领域
本发明涉及一种多线程文件遍历技术,即InforGuard扫描模块采用的遍历文件系统机制。
背景技术
InforGuard在应用过程中,需要尽可能实时的发现被监控文件系统的文件变化。遍历扫描是解决该问题的传统手段,特别是在特定的操作系统和应用场景下,遍历技术有其不可替代的意义。
目前,在此领域采用的方案为:
以单线程工作的方式,基于深度优先或广度优先的算法遍历文件系统,大多采用递归的方式实现。
该方法的特点是实现简单,易于控制,稳定性和可靠性较高。但是遍历的效率是该项技术使用的主要限制和瓶颈。遍历一次文件系统的时间与文件系统的规模直接相关,因此,当文件系统超过一定规模时,遍历的性能将急剧降低,直接影响该机制的可用性。
发明内容
本发明的目的就是针对上述的不足,提供了一种基于多线程文件遍历机制,能够在保证可靠性的前提下,有效提高遍历的性能,从而扩展遍历机制的可用范围。
本发明提供的多线程文件遍历技术,采用可配置的多线程模式和机遇队列的协同遍历方法,具有很好的效果。
1.可配置的多线程模式
以多线程并行工作的方式代替传统上单一线程的工作模式,并可通过配置文件调整最大的工作线程数限制。允许使用者根据实际文件系统的规模及结构,调优参数,达到实际环境的最佳性能。
2.基于队列的协同遍历方法
多个线程通过队列交换消息,实现协同遍历。所有线程的执行逻辑相同,包括三步
a)获取遍历任务:从队列中摘出一个任务,任务包含一个目录的全路径信息。
b)执行遍历任务:针对当前任务中指定的目录,遍历找出该目录的所有直接子目录和子文件,记录这些信息。
c)产生新的遍历任务:上一步识别出来的每个子目录都作为一个独立的任务,将这些任务投递到队列中。
启动各工作线程,各线程在队列上等待任务;触发遍历的起始任务包含顶级目录的全路径信息,起始任务投递到队列之后,各线程按照上述逻辑,不断获取并处理任务,执行当前目录遍历,同时根据处理结果产生新的任务;如此往复,达到多线程协同遍历的效果。判断本次遍历结束的标志是:所有线程都处于等待状态,并且队列中没有任务。
队列机制是解决多线程并行协同工作的可靠和高效的手段。
本发明具体是这样实现的,包括两部分,第一部分启动遍历,是通过如下步骤实现的:
首先启动工作线程组,通过配置参数聚顶启动工作线程的数目,可以按照被遍历对象的规模大小及运行服务器的处理能力调整,达到最佳的并发处理效果。线程组的各个线程启动后,处于空闲等待任务状态。
其次投递起始任务,文件系统的顶级目录封装为任务,投递到队列中,作为遍历的触发起始点,工作线程组的某个线程将得到该任务并进行处理,然后产生后续任务。
最后等待所有线程处于空闲状态且队列为空,判断遍历结束的标志是,所有的线程都处于空闲状态,并且队列中没有等待处理的任务。此时,可以通知遍历的启动者,报告本次遍历结束。
第二部分进行工作线程处理,是这样实现的:
首先从队列中取出任务,线程启动后,或每次处理任务完成后,都在队列上等待新任务,有任务时,取出任务进行处理,无任务时,空闲等待。
其次执行当前目录遍历,任务内容是一个目录的全路径信息,是线程本次处理的当前目录,遍历出当前目录的所有直接子目录和直接子文件(即只遍历出当前目录的下面一级),记录遍历信息或进行相关的业务处理。
最后根据遍历结果产生子任务并投递到队列,本次遍历出来的所有直接子目录封装为新的任务,投递到队列中(作为后续遍历过程的起始任务,因而各个线程可以循环往复按照本流程的步骤遍历整个文件系统),本线程投递任务完成后,再次回到本流程的第一步等待处理下一个任务。
由此可以看出,在启动遍历的第一步启动线程组后,第一部分的其他步骤和第二部分是并行的,即主线程与各子线程是并行运行的。
该处理过程利用队列机制实现多线程的协同,克服传统单线程遍历效率低下的弱点,显著提高了遍历机制的处理性能和应用范围。
本发明提供的多线程文件遍历技术具有如下优点:
1.显著提高遍历的性能
通过多线程工作的机制,可充分利用服务器的CPU等资源,协同的进行文件系统遍历扫描;相对传统单线程的串行工作方式,性能显著提高。
2.扩展遍历机制的应用范围
配置并发工作线程的数目,可以有效支持规模较大的文件系统,扩展了遍历机制的应用范围。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东中创软件商用中间件股份有限公司,未经山东中创软件商用中间件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910020370.0/2.html,转载请声明来源钻瓜专利网。