一种扫描任务的分配方法和装置的制作方法

文档序号:6371065阅读:207来源:国知局
专利名称:一种扫描任务的分配方法和装置的制作方法
技术领域
本发明实 施方式涉及计算机管理技术领域,更具体地,涉及一种扫描任务的分配方法和装置。
背景技术
随着电脑硬件和软件系统的不断升级,当今计算机科学发展趋势向微型化、网络化和智能化等多方面发展。在计算机应用中,通常会涉及到对各种扫描任务的分配处理。目前计算机处理扫描任务的分配方式主要包括单线程方式和多线程方式。在单线程方式中,计算机以单线程的方式逐个对单个扫描点进行扫描处理;在多线程方式中,计算机以多线程的方式同时对多个扫描点进行扫描处理。然而,对于单线程扫描方式,在同一时刻只能进行一个扫描任务,不能充分利用多核中央处理单元(CPU)的优势,因此扫描速度较慢,扫描效率低下。对于多线程扫描方式,虽然采用了多线程的方式,但是并没有做很好的任务分配,这样可能会导致其中某些线程执行了较多或者耗时较长的任务,而其它线程早早结束了任务,实际上没有充分利用多线程的优势,因此扫描效率也并不令人满意。

发明内容
本发明实施方式提出一种扫描任务的分配方法,以提高扫描效率。本发明实施方式提出一种扫描任务的分配装置,以提高扫描效率。本发明实施方式的具体方案如下一种扫描任务的分配方法,包括创建线程池,所述线程池包含有n个线程,其中n为自然数;创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。一种扫描任务的分配装置,该装置包括线程池创建单元和扫描任务总队列分配单元,其中线程池创建单元,用于创建线程池,所述线程池包含有n个线程,其中n为自然数;扫描任务总队列分配单元,用于创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程,并将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。从上述技术方案可以看出,在本发明实施方式中,创建线程池,线程池包含有n个线程,其中n为自然数;创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。由此可见,本发明实施方式通过应用线程池技术来平均分配扫描任务总队列,从而避免了多线程访问同一子任务队列时的线程同步开销,因此提高了扫描效率。


图I为根据本发明实施方式的扫描任务的分配方法流程图;图2为根据本发明实施方式的扫描任务的分配方法示范性流程图;图3为根据本发明实施方式的对扫描任务按照任务队列进行分配的示范性流程图;图4为根据本发明实施方式的扫描任务的分配装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。图I为根据本发明实施方式的扫描任务的分配方法流程图。如图I所示,该方法包括步骤101 :创建线程池,线程池包含有n个线程,其中n为自然数。在这里,首先创建线程池,其中在线程池中优选具有多个(至少两个)线程。线程池是一种多线程处理形式,处理过程中将任务添加到任务队列,在创建线程后,首先启动线程并由线程具体执行任务队列中的任务。优选地,线程池中线程数与中央处理单元(CPU)的逻辑内核数保持一致,从而充分优化利用计算机的处理资源。步骤102 :创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程。在这里,扫描任务总队列中包含有扫描任务,而且可以基于具体应用需要创建多种类的扫描任务。比如,扫描任务具体可以包括垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务,等等。以上虽然通过罗列的方式详细列出了扫描任务的一些示范性具体种类,本领域技术人员可以意识到,这种罗列仅仅是示范性的,并不用于对本发明实施方式的保护范围进行限定。步骤103 :将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。创建完扫描任务总队列之后,需要将扫描任务总队列中的扫描任务平均分配给线程池中的线程,从而缩短扫描处理时间,优化扫描效率。此处涉及平均任务分配问题,为了便于说明,首先假定每个线程执行同样的扫描任务时,其耗时相同。在这种情况下,只需要关注每个扫描任务耗时即可,只要保证分配给每个线程的扫描任务,其总执行耗时大致相等即可,具体分配算法优选可以基于现有的贪心算法原理(Greedy algorithm)。贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪心算法设计算法的特点是一步一步地进行,以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。具体地,在本发明实施方式中,首先准备好扫描任务总队列Q。将所有扫描任务放入扫描任务总队列Q中,并且按照扫描任务历史执行平均耗时从大到小进行排序。优选地,判断扫描任务总队列Q中扫描任务数与线程池线程总数的大小关系,其中如果扫描任务总队列Q中扫描任务数m小于线程池线程总数n,则从Q中取出全部任务(Q中同时清除掉这些任务),并依次放入子任务队列q0、ql*“q(m-l)。如果扫描任务总队列Q中的扫描任务总数m大与线程池线程总数n,则依次执行
任务分配步骤从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;排序步骤对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。具体地,排序步骤中将扫描任务总队列中剩余的扫描任务依次平均分配给排序后的n个子任务队列可以包括判断步骤判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n ;如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数;如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。实际上,当扫描任务总队列Q中扫描任务数大与线程池线程总数时,可以从Q中按照排序结果取出n个任务,并放入子任务队列q0、ql-q(n-l)中,对子任务队列按其当前所含任务总执行耗时从小到达排列;若Q中还剩余任务,则返回到判断Q中扫描任务总数与线程池线程总数大小的步骤。下面通过举例方式对上述算法进行更加详细的说明。在一个实施方式中,当扫描任务总队列中的扫描任务总数小于或等于线程池中线程总数时,可以将扫描任务总队列中的扫描任务逐一分配给线程池中的线程,其中每个线程处理单一的扫描任务。比如当扫描任务总队列中的扫描任务总数为3时,可以将扫描任务分别命名为扫描任务I、扫描任务2和扫描任务3。如果线程池中线程总数为5,可以分别命名为线程
I、线程2、线程3、线程4和线程5。假设线程I用于处理子任务队列q0、线程2用于处理子任务队列ql、线程3用于处理子任务队列q2、线程4用于处理子任务队列q5。此时,扫描任务总队列中的扫描任务总数(3)小于线程池中线程总数(5),因此可以将这3个扫描任务随机分配给3个线程,或者按照命名顺序将扫描任务I分配给线程I (即q0)、扫描任务2分配给线程2 (即ql),以及将扫描任务3分配给线程3 (即q2),等等。在一个实施方式中,当扫描任务总队列中的扫描任务总数大于线程池中线程总数n时,对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序;再从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;然后对n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并继续判断扫描任务总队列中的扫描任务总数是否依然大于线程池中线程总数,如果依然大于,则从排序后扫描任务总队列中依次取出n个扫描任务放入n个子任务队列中之后,重复上述流程,直到扫描任务总队列中的扫描任务总数小于线程池中线程总数,然后将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的n个子任务队列;再将n个子任务队列分配给所述线程池中的线程,其中每个线程处理单一的子任务队列。该方法还可以包括线程池中的线程从对应的子任务队列中获取扫描任务并执行获取的扫描任务。下面举一个具体的例子,对扫描任务总队列中的扫描任务总数大于线程池中线程总数的情形,进行更加详细的说明。
如假定当前线程池中有3个线程,分别为线程I’、线程2’和线程3’ ;扫描任务总队列Q中有6个扫描任务,分别为扫描任务I’(扫描回收站文件)其历史执行平均耗时为I;扫描任务2’(扫描系统临时文件):其历史执行平均耗时为3;扫描任务3’(扫描IE临时文件):其历史执行平均耗时为5 ;扫描任务4’(扫描无效快捷方式):其历史执行平均耗时为2;扫描任务5’(扫描内存转储文件):其历史执行平均耗时为4;扫描任务6’(扫描缩略图缓存)其历史执行平均耗时为7。对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序,此时从大到小排序结果为扫描任务6’、扫描任务3’、扫描任务5’,扫描任务2’、扫描任务4’和扫描任务I’。由于线程数为3,因此可以将扫描任务总队列Q划分为3个子任务队列,分别为ql, q2,q3。接着,从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中。此时,经过第一轮划分后q0为扫描任务6’(总耗时7)ql为扫描任务3’(总耗时5)q2为扫描任务5’(总耗时4)。接着,再对这3个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次分配给这排序后的3个子任务队列。此时,按照当前所含任务执行耗时从小到达排序应为排序应为q2,ql, q0,然后再将扫描任务总队列中剩余的扫描任务依次分配给这排序后的3个子任务队列。具体为经过第二轮划分后q2为扫描任务5’和扫描任务2’(总耗时7);ql为扫描任务3’和扫描任务4’(总耗时7)q0为扫描任务6’和扫描任务I’(总耗时8)此时,按照总耗时从小到达排序应为排序应为q2,ql, qO。而且扫描任务总队列中已没有待划分的任务,可以看到q2,ql, qO的耗时大致相同,总的执行时间最少。
假定每个线程具有相同的执行资源,然后,再将这3个子任务队列(q2,ql, qO)分配给线程池中的3个线程,其中每个线程处理单一的子任务队列。比如可以将这三个扫描任务随机分配给3个线程,或者按照命名顺序将子任务队列I’(qO)分配给线程I’、子任务队列2’(ql)分配给线程2’,以及将子任务队列3’(q2)分配给线程3’,等等。在上述实施方式中,对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序。实际上,扫描任务的耗时是一个平均值,可以根据需要从配置文件中读取,并且每次扫描完成后都要重新生成扫描任务历史平均耗时,而且可以根据海量用户关于该项扫描任务耗时的上报统计出平均值。具体地,对于每个扫描任务,分别计算该扫描任务的历史执行平均耗时 TaverageTime,其中扫描任务的历史执行次数k,本次扫描耗时为currentTime,本次扫描之前的历史执行平均耗时为averageTime ;其中TaverageTime=(averageTime氺k+currentTime)/(k+1);对于各个扫描任务,按照各自计算的TaverageTime进行从大到小排序,然后再新计算出averageTime以及扫描次数k+1,并写入配置文件以供下次扫描时读取。在另一个实施方式中,对于各个扫描任务,也可以仅基于各自的上次扫描耗时来对扫描任务进行排序,从而节省计算量。在本发明实施方式中,可以首先划分扫描任务总队列,再创建线程池;也可以首先创建线程池,再创建扫描任务总队列。图2为根据本发明实施方式的扫描任务的分配方法示范性流程图。如图2所示,该方法包括步骤201 :将等待执行的扫描任务放入扫描任务总队列中。步骤202 :获取CPU的逻辑内核个数n,并对扫描任务总队列进行划分,划分为n个子任务队列。步骤203 :创建含有线程个数为n的线程池,每个线程池对应于一个子任务队列。步骤204 :线程池中的线程持续地从指定的子任务队列中获取任务并执行该扫描任务。图3为根据本发明实施方式的对扫描任务按照任务队列进行分配的示范性流程图。如图3所示,该方法包括步骤301 :准备扫描任务总队列Q以及n个子任务队列q0、ql…q(n_l),其中n为线程池中线程个数。步骤302 :将所有扫描任务放入扫描任务总队列Q。步骤303 :对扫描任务总队列Q中的扫描任务,按照扫描任务历史执行平均耗时从大到小进行排序。步骤304 :判断扫描任务总队列Q中的扫描任务是否小于等于线程池中线程数n,如果是则执行步骤305并结束本流程,如果不是则执行步骤306及其后续步骤。步骤305 :按照在步骤303中确定的历史执行平均耗时排序,从Q中取出全部扫描任务(Q中同时清除掉全部扫描任务),并依次放入子任务队列中,其中如果全部扫描任务的总数为m,则依次放入子任务队列qO、ql…q(m-l)。步骤306 :按照按步骤303中确定的历史执行平均耗时排序,从Q中取出n个任务(Q中同时清除掉这n个任务),并放入子任务队列中ql…q(n-l)。步骤307 :对子任务队列ql…q(n-l)按其当前所含任务总执行耗时从小到达排列。 步骤308 :判断扫描任务总队列Q是否还有任务,是则返回步骤304继续运行本流程,没有则结束本流程。在本发明实施方式中,利用线程池的技术来分配执行各个扫描任务,而且将扫描任务总队列划分成个数与线程池中线程个数相同的子任务队列,各子任务队列中总执行耗时基本相同,并且各线程只从指定的子任务队列中获取任务执行,从而避免多线程访问同一子任务队列时的线程同步开销。基于上述详细分析,本发明实施方式还提出了一种扫描任务的分配装置。图4为根据本发明实施方式的该装置扫描任务的分配装置结构图。如图4所示,该装置包括线程池创建单元401和扫描任务总队列分配单元402,其中线程池创建单元401,用于创建线程池,线程池包含有n个线程,其中n为自然数;扫描任务总队列分配单元402,用于创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程,并将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。在一个实施方式中,线程池创建单元401,用于创建线程池,其中线程池中线程数为中央处理单元(CPU)的逻辑内核数。在一个实施方式中,扫描任务总队列分配单元402,还用于在将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列步骤之前,将所有扫描任务放入扫描任务总队列。优选地,扫描任务总队列分配单元402,还用于在将所有扫描任务放入扫描任务总队列之后,对扫描任务总队列中的各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序。具体地,扫描任务可以包括垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务,等等。以上虽然通过罗列的方式详细列出了扫描任务的一些示范性具体种类,本领域技术人员可以意识到,这种罗列仅仅是示范性的,并不用于对本发明实施方式的保护范围进行限定。在一个实施方式中,扫描任务总队列分配单元402,用于当扫描任务总队列中的扫描任务总数小于或等于子任务队列总数n时,将所述扫描任务总队列中的扫描任务逐一分配给所述子任务队列。在一个实施方式中,扫描任务总队列分配单兀402,用于执行任务分配步骤当扫描任务总队列中的扫描任务总数大于子任务队列总数n时,从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;
排序步骤对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。在一个实施方式中,扫描任务总队列分配单元402再执行将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列时,具体执行判断步骤判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n ;如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数;如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。 具体地,扫描任务总队列分配单元402,用于当扫描任务总队列中的扫描任务总数大于线程池中线程总数n时,对各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序;从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;对n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给排序后的n个子任务队列;并将n个子任务队列分配给线程池中的线程,其中每个线程处理单一的子任务队列。在一个实施方式中,扫描任务总队列分配单兀402,用于对于每个扫描任务,分别计算其扫描任务历史执行平均耗时TaverageTime,其中扫描任务的历史执行次数k,本次扫描耗时为currentTime,本次扫描之前的历史执行平均耗时为averageTime ;其中TaverageTime=(averageTime氺k+currentTime)/(k+1);并对于各个扫描任务,按照各自计算的TaverageTime进行从大到小排序。可选地,扫描任务总队列分配单元402,用于对于各个扫描任务,按照各自的上次扫描耗时进行从大到小排序。其中,线程池创建单元401,可以用于创建线程池,其中线程池中线程数为中央处理单元(CPU)的逻辑内核数。综上所述,在本发明实施方式中,创建线程池,线程池包含n个线程,其中n为自然数;创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。由此可见,本发明实施方式通过应用线程池技术来平均分配扫描任务总队列,从而避免了多线程访问同一子任务队列时的线程同步开销,因此提高了扫描效率。另外,在本发明实施方式中,优选将任务队列划分成个数与线程池中线程个数相同的子任务队列,而且各子任务队列中总执行耗时相同,从而进一步提高了扫描效率。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种扫描任务的分配方法,其特征在于,包括 创建线程池,所述线程池包含有n个线程,其中n为自然数; 创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程; 将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。
2.根据权利要求I所述的扫描任务的分配方法,其特征在于,所述创建线程池步骤包括创建线程池,其中线程池中线程数为中央处理单元(CPU)的逻辑内核数。
3.根据权利要求I所述的扫描任务的分配方法,其特征在于,该方法还包括线程池中的线程从对应的子任务队列中获取扫描任务并执行获取的扫描任务。
4.根据权利要求I所述的扫描任务的分配方法,其特征在于,所述扫描任务包括垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务。
5.根据权利要求I所述的扫描任务的分配方法,其特征在于,所述将扫描任务总队列中的扫描任务平均分配给所述n个子任务队列步骤之前还包括将所有扫描任务放入扫描任务总队列。
6.根据权利要求5所述的扫描任务的分配方法,其特征在于,在所述将所有扫描任务放入扫描任务总队列步骤之后还包括对扫描任务总队列中的各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序。
7.根据权利要求6所述的扫描任务的分配方法,其特征在于,所述将扫描任务总队列中的扫描任务平均分配给所述n个子任务队列包括 当扫描任务总队列中的扫描任务总数小于或等于子任务队列总数n时,将所述扫描任务总队列中的扫描任务逐一分配给所述子任务队列。
8.根据权利要求6所述的扫描任务的分配方法,其特征在于,所述将扫描任务总队列中的扫描任务平均分配给所述n个子任务队列包括 任务分配步骤当扫描任务总队列中的扫描任务总数大于子任务队列总数n时,从排序后的扫描任务总队列中依次取出n个扫描任务,放入所述n个子任务队列中; 排序步骤对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。
9.根据权利要求8所述的扫描任务的分配方法,其特征在于,所述将扫描任务总队列中剩余的扫描任务依次平均分配给排序后的n个子任务队列包括 判断步骤判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n ; 如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数; 如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。
10.根据权利要求6至9中任意一项所述的扫描任务的分配方法,其特征在于,所述对各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序包括 对于每个扫描任务,分别计算其扫描任务历史执行平均耗时TaverageTime,其中扫描任务的历史执行次数k,本次扫描耗时为currentTime,本次扫描之前的历史执行平均耗时为 averageTime ;其中TaverageTime=(averageTime*k+currentTime)/(k+1); 对于各个扫描任务,按照各自计算的TerageTime进行从大到小排序。
11.根据权利要求6至9中任意一项所述的扫描任务的分配方法,其特征在于,所述对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序包括 对于各个扫描任务,按照各自的上次扫描耗时进行从大到小排序。
12.一种扫描任务的分配装置,其特征在于,该装置包括线程池创建单元和扫描任务总队列分配单元,其中 线程池创建单元,用于创建线程池,所述线程池包含有n个线程,其中n为自然数;扫描任务总队列分配单元,用于创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程,并将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。
13.根据权利要求12的扫描任务的分配装置,其特征在于, 线程池创建单元,用于创建线程池,其中线程池中线程数为中央处理单元(CPU)的逻辑内核数。
14.根据权利要求12的扫描任务的分配装置,其特征在于,所述扫描任务包括垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务。
15.根据权利要求12的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单元,还用于在将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列之前,将所有扫描任务放入扫描任务总队列。
16.根据权利要求15的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单元,还用于在将所有扫描任务放入扫描任务总队列之后,对扫描任务总队列中的各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序。
17.根据权利要求16的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单元,用于当扫描任务总队列中的扫描任务总数小于或等于子任务队列总数n时,将所述扫描任务总队列中的扫描任务逐一分配给所述子任务队列。
18.根据权利要求16的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单元,用于执行 任务分配步骤当扫描任务总队列中的扫描任务总数大于子任务队列总数n时,从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中; 排序步骤对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。
19.根据权利要求18的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单元,用于执行 判断步骤判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n ; 如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数;如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。
20.根据权利要求16-19中任意一项所述的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单元,用于对于每个扫描任务,分别计算其扫描任务历史执行平均耗时TaverageTime,其中扫描任务的历史执行次数k,本次扫描耗时为currentTime,本次扫描之前的历史执行平均耗时为averageTime ;其中TaverageTime=(averageTime*k+currentTime)/(k+1); 并对于各个扫描任务,按照各自计算的TaverageTime进行从大到小排序。
21.根据权利要求16-19中任意一项所述的扫描任务的分配装置,其特征在于, 扫描任务总队列分配单兀,用于对于各个扫描任务,按照各自的上次扫描耗时进行从大到小排序。
全文摘要
本发明实施方式提出一种扫描任务的分配方法和装置。方法包括创建线程池,所述线程池包含有n个线程,其中n为自然数;创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。本发明实施方式通过应用线程池技术来平均分配扫描任务,避免了多线程访问同一子任务队列时的线程同步开销,提高了扫描效率。
文档编号G06F9/50GK102722417SQ20121018578
公开日2012年10月10日 申请日期2012年6月7日 优先权日2012年6月7日
发明者付立群, 李 瑞, 董涛, 金海峰 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1