CN102722417B - 一种扫描任务的分配方法和装置 - Google Patents

一种扫描任务的分配方法和装置 Download PDF

Info

Publication number
CN102722417B
CN102722417B CN201210185787.4A CN201210185787A CN102722417B CN 102722417 B CN102722417 B CN 102722417B CN 201210185787 A CN201210185787 A CN 201210185787A CN 102722417 B CN102722417 B CN 102722417B
Authority
CN
China
Prior art keywords
scan task
queue
task
scan
total
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210185787.4A
Other languages
English (en)
Other versions
CN102722417A (zh
Inventor
董涛
付立群
李�瑞
金海峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201210185787.4A priority Critical patent/CN102722417B/zh
Publication of CN102722417A publication Critical patent/CN102722417A/zh
Application granted granted Critical
Publication of CN102722417B publication Critical patent/CN102722417B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明实施方式提出一种扫描任务的分配方法和装置。方法包括:创建线程池,所述线程池包含有n个线程,其中n为自然数;创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。本发明实施方式通过应用线程池技术来平均分配扫描任务,避免了多线程访问同一子任务队列时的线程同步开销,提高了扫描效率。

Description

一种扫描任务的分配方法和装置
技术领域
本发明实施方式涉及计算机管理技术领域,更具体地,涉及一种扫描任务的分配方法和装置。
背景技术
随着电脑硬件和软件系统的不断升级,当今计算机科学发展趋势向微型化、网络化和智能化等多方面发展。
在计算机应用中,通常会涉及到对各种扫描任务的分配处理。目前计算机处理扫描任务的分配方式主要包括单线程方式和多线程方式。在单线程方式中,计算机以单线程的方式逐个对单个扫描点进行扫描处理;在多线程方式中,计算机以多线程的方式同时对多个扫描点进行扫描处理。
然而,对于单线程扫描方式,在同一时刻只能进行一个扫描任务,不能充分利用多核中央处理单元(CPU)的优势,因此扫描速度较慢,扫描效率低下。对于多线程扫描方式,虽然采用了多线程的方式,但是并没有做很好的任务分配,这样可能会导致其中某些线程执行了较多或者耗时较长的任务,而其它线程早早结束了任务,实际上没有充分利用多线程的优势,因此扫描效率也并不令人满意。
发明内容
本发明实施方式提出一种扫描任务的分配方法,以提高扫描效率。
本发明实施方式提出一种扫描任务的分配装置,以提高扫描效率。
本发明实施方式的具体方案如下:
一种扫描任务的分配方法,包括:
创建线程池,所述线程池包含有n个线程,其中n为自然数;
创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;
将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。
一种扫描任务的分配装置,该装置包括线程池创建单元和扫描任务总队列分配单元,其中:
线程池创建单元,用于创建线程池,所述线程池包含有n个线程,其中n为自然数;
扫描任务总队列分配单元,用于创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程,并将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。
从上述技术方案可以看出,在本发明实施方式中,创建线程池,线程池包含有n个线程,其中n为自然数;创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。由此可见,本发明实施方式通过应用线程池技术来平均分配扫描任务总队列,从而避免了多线程访问同一子任务队列时的线程同步开销,因此提高了扫描效率。
附图说明
图1为根据本发明实施方式的扫描任务的分配方法流程图;
图2为根据本发明实施方式的扫描任务的分配方法示范性流程图;
图3为根据本发明实施方式的对扫描任务按照任务队列进行分配的示范性流程图;
图4为根据本发明实施方式的扫描任务的分配装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图1为根据本发明实施方式的扫描任务的分配方法流程图。
如图1所示,该方法包括:
步骤101:创建线程池,线程池包含有n个线程,其中n为自然数。
在这里,首先创建线程池,其中在线程池中优选具有多个(至少两个)线程。线程池是一种多线程处理形式,处理过程中将任务添加到任务队列,在创建线程后,首先启动线程并由线程具体执行任务队列中的任务。
优选地,线程池中线程数与中央处理单元(CPU)的逻辑内核数保持一致,从而充分优化利用计算机的处理资源。
步骤102:创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程。
在这里,扫描任务总队列中包含有扫描任务,而且可以基于具体应用需要创建多种类的扫描任务。
比如,扫描任务具体可以包括:垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务,等等。
以上虽然通过罗列的方式详细列出了扫描任务的一些示范性具体种类,本领域技术人员可以意识到,这种罗列仅仅是示范性的,并不用于对本发明实施方式的保护范围进行限定。
步骤103:将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列。
创建完扫描任务总队列之后,需要将扫描任务总队列中的扫描任务平均分配给线程池中的线程,从而缩短扫描处理时间,优化扫描效率。
此处涉及平均任务分配问题,为了便于说明,首先假定每个线程执行同样的扫描任务时,其耗时相同。在这种情况下,只需要关注每个扫描任务耗时即可,只要保证分配给每个线程的扫描任务,其总执行耗时大致相等即可,具体分配算法优选可以基于现有的贪心算法原理(Greedy algorithm)。
贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪心算法设计算法的特点是一步一步地进行,以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。
具体地,在本发明实施方式中,首先准备好扫描任务总队列Q。将所有扫描任务放入扫描任务总队列Q中,并且按照扫描任务历史执行平均耗时从大到小进行排序。
优选地,判断扫描任务总队列Q中扫描任务数与线程池线程总数的大小关系,其中:
如果扫描任务总队列Q中扫描任务数m小于线程池线程总数n,则从Q中取出全部任务(Q中同时清除掉这些任务),并依次放入子任务队列q0、q1…q(m-1)。
如果扫描任务总队列Q中的扫描任务总数m大与线程池线程总数n,则依次执行:
任务分配步骤:从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;
排序步骤:对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。
具体地,排序步骤中将扫描任务总队列中剩余的扫描任务依次平均分配给排序后的n个子任务队列可以包括:
判断步骤:判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n;
如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数;
如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。
实际上,当扫描任务总队列Q中扫描任务数大与线程池线程总数时,可以从Q中按照排序结果取出n个任务,并放入子任务队列q0、q1…q(n-1)中,对子任务队列按其当前所含任务总执行耗时从小到达排列;若Q中还剩余任务,则返回到判断Q中扫描任务总数与线程池线程总数大小的步骤。
下面通过举例方式对上述算法进行更加详细的说明。
在一个实施方式中,当扫描任务总队列中的扫描任务总数小于或等于线程池中线程总数时,可以将扫描任务总队列中的扫描任务逐一分配给线程池中的线程,其中每个线程处理单一的扫描任务。
比如:当扫描任务总队列中的扫描任务总数为3时,可以将扫描任务分别命名为扫描任务1、扫描任务2和扫描任务3。如果线程池中线程总数为5,可以分别命名为线程1、线程2、线程3、线程4和线程5。假设线程1用于处理子任务队列q0、线程2用于处理子任务队列q1、线程3用于处理子任务队列q2、线程4用于处理子任务队列q5。此时,扫描任务总队列中的扫描任务总数(3)小于线程池中线程总数(5),因此可以将这3个扫描任务随机分配给3个线程,或者按照命名顺序将扫描任务1分配给线程1(即q0)、扫描任务2分配给线程2(即q1),以及将扫描任务3分配给线程3(即q2),等等。
在一个实施方式中,当扫描任务总队列中的扫描任务总数大于线程池中线程总数n时,对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序;再从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;然后对n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并继续判断扫描任务总队列中的扫描任务总数是否依然大于线程池中线程总数,如果依然大于,则从排序后扫描任务总队列中依次取出n个扫描任务放入n个子任务队列中之后,重复上述流程,直到扫描任务总队列中的扫描任务总数小于线程池中线程总数,然后将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的n个子任务队列;再将n个子任务队列分配给所述线程池中的线程,其中每个线程处理单一的子任务队列。
该方法还可以包括:线程池中的线程从对应的子任务队列中获取扫描任务并执行获取的扫描任务。
下面举一个具体的例子,对扫描任务总队列中的扫描任务总数大于线程池中线程总数的情形,进行更加详细的说明。
比如:假定当前线程池中有3个线程,分别为线程1’、线程2’和线程3’;扫描任务总队列Q中有6个扫描任务,分别为:扫描任务1’(扫描回收站文件):其历史执行平均耗时为1;扫描任务2’(扫描系统临时文件):其历史执行平均耗时为3;扫描任务3’(扫描IE临时文件):其历史执行平均耗时为5;扫描任务4’(扫描无效快捷方式):其历史执行平均耗时为2;扫描任务5’(扫描内存转储文件):其历史执行平均耗时为4;扫描任务6’(扫描缩略图缓存):其历史执行平均耗时为7。
对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序,此时从大到小排序结果为:
扫描任务6’、扫描任务3’、扫描任务5’,扫描任务2’、扫描任务4’和扫描任务1’。
由于线程数为3,因此可以将扫描任务总队列Q划分为3个子任务队列,分别为q1,q2,q3。
接着,从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中。
此时,经过第一轮划分后:
q0为:扫描任务6’(总耗时7)
q1为:扫描任务3’(总耗时5)
q2为:扫描任务5’(总耗时4)。
接着,再对这3个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次分配给这排序后的3个子任务队列。
此时,按照当前所含任务执行耗时从小到达排序应为排序应为:q2,q1,q0,然后再将扫描任务总队列中剩余的扫描任务依次分配给这排序后的3个子任务队列。
具体为:
经过第二轮划分后:
q2为:扫描任务5’和扫描任务2’(总耗时7);
q1为:扫描任务3’和扫描任务4’(总耗时7)
q0为:扫描任务6’和扫描任务1’(总耗时8)
此时,按照总耗时从小到达排序应为排序应为:q2,q1,q0。而且扫描任务总队列中已没有待划分的任务,可以看到q2,q1,q0的耗时大致相同,总的执行时间最少。
假定每个线程具有相同的执行资源,然后,再将这3个子任务队列(q2,q1,q0)分配给线程池中的3个线程,其中每个线程处理单一的子任务队列。
比如:可以将这三个扫描任务随机分配给3个线程,或者按照命名顺序将子任务队列1’(q0)分配给线程1’、子任务队列2’(q1)分配给线程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、q1…q(n-1),其中n为线程池中线程个数。
步骤302:将所有扫描任务放入扫描任务总队列Q。
步骤303:对扫描任务总队列Q中的扫描任务,按照扫描任务历史执行平均耗时从大到小进行排序。
步骤304:判断扫描任务总队列Q中的扫描任务是否小于等于线程池中线程数n,如果是则执行步骤305并结束本流程,如果不是则执行步骤306及其后续步骤。
步骤305:按照在步骤303中确定的历史执行平均耗时排序,从Q中取出全部扫描任务(Q中同时清除掉全部扫描任务),并依次放入子任务队列中,其中如果全部扫描任务的总数为m,则依次放入子任务队列q0、q1…q(m-1)。
步骤306:按照按步骤303中确定的历史执行平均耗时排序,从Q中取出n个任务(Q中同时清除掉这n个任务),并放入子任务队列中q1…q(n-1)。
步骤307:对子任务队列q1…q(n-1)按其当前所含任务总执行耗时从小到达排列。
步骤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个子任务队列。由此可见,本发明实施方式通过应用线程池技术来平均分配扫描任务总队列,从而避免了多线程访问同一子任务队列时的线程同步开销,因此提高了扫描效率。
另外,在本发明实施方式中,优选将任务队列划分成个数与线程池中线程个数相同的子任务队列,而且各子任务队列中总执行耗时相同,从而进一步提高了扫描效率。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种扫描任务的分配方法,其特征在于,包括:
创建线程池,所述线程池包含有n个线程,其中n为自然数;
创建扫描任务总队列,并将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程;
将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列;
所述将扫描任务总队列中的扫描任务平均分配给所述n个子任务队列步骤之前还包括:将所有扫描任务放入扫描任务总队列;
在所述将所有扫描任务放入扫描任务总队列步骤之后还包括:对扫描任务总队列中的各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序;所述对各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序包括:对于每个扫描任务,分别计算其扫描任务历史执行平均耗时TaverageTime,其中扫描任务的历史执行次数k,本次扫描耗时为currentTime,本次扫描之前的历史执行平均耗时为averageTime;其中:TaverageTime=(averageTime*k+currentTime)/(k+1);对于各个扫描任务,按照各自计算的TaverageTime进行从大到小排序;
所述将扫描任务总队列中的扫描任务平均分配给所述n个子任务队列包括:当扫描任务总队列中的扫描任务总数小于或等于子任务队列总数n时,将所述扫描任务总队列中的扫描任务逐一分配给所述子任务队列;或包括:
任务分配步骤:当扫描任务总队列中的扫描任务总数大于子任务队列总数n时,从排序后的扫描任务总队列中依次取出n个扫描任务,放入所述n个子任务队列中;
排序步骤:对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。
2.根据权利要求1所述的扫描任务的分配方法,其特征在于,所述创建线程池步骤包括:创建线程池,其中线程池中线程数为中央处理单元(CPU)的逻辑内核数。
3.根据权利要求1所述的扫描任务的分配方法,其特征在于,该方法还包括:线程池中的线程从对应的子任务队列中获取扫描任务并执行获取的扫描任务。
4.根据权利要求1所述的扫描任务的分配方法,其特征在于,所述扫描任务包括:垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务。
5.根据权利要求1所述的扫描任务的分配方法,其特征在于,所述将扫描任务总队列中剩余的扫描任务依次平均分配给排序后的n个子任务队列包括:
判断步骤:判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n;
如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数;
如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。
6.根据权利要求1至5中任意一项所述的扫描任务的分配方法,其特征在于,所述对各个扫描任务按照扫描任务历史执行平均耗时进行从大到小排序包括:
对于各个扫描任务,按照各自的上次扫描耗时进行从大到小排序。
7.一种扫描任务的分配装置,其特征在于,该装置包括线程池创建单元和扫描任务总队列分配单元,其中:
线程池创建单元,用于创建线程池,所述线程池包含有n个线程,其中n为自然数;
扫描任务总队列分配单元,用于创建扫描任务总队列,将扫描任务总队列划分为n个子任务队列,每个子任务队列对应于一个线程,并将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列;
扫描任务总队列分配单元,还用于在将所述扫描任务总队列中的扫描任务平均分配给所述n个子任务队列之前,将所有扫描任务放入扫描任务总队列;
扫描任务总队列分配单元,还用于在将所有扫描任务放入扫描任务总队列之后,对扫描任务总队列中的各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序;所述对各个扫描任务按照各自的扫描任务历史执行平均耗时进行从大到小排序包括:对于每个扫描任务,分别计算其扫描任务历史执行平均耗时TaverageTime,其中扫描任务的历史执行次数k,本次扫描耗时为currentTime,本次扫描之前的历史执行平均耗时为averageTime;其中:TaverageTime=(averageTime*k+currentTime)/(k+1);对于各个扫描任务,按照各自计算的TaverageTime进行从大到小排序;
扫描任务总队列分配单元,用于当扫描任务总队列中的扫描任务总数小于或等于子任务队列总数n时,将所述扫描任务总队列中的扫描任务逐一分配给所述子任务队列;或用于执行:
任务分配步骤:当扫描任务总队列中的扫描任务总数大于子任务队列总数n时,从排序后的扫描任务总队列中依次取出n个扫描任务,放入n个子任务队列中;
排序步骤:对所述n个子任务队列按照当前所含任务执行耗时进行从小到大排序,并将扫描任务总队列中剩余的扫描任务依次平均分配给所述排序后的n个子任务队列。
8.根据权利要求7的扫描任务的分配装置,其特征在于,
线程池创建单元,用于创建线程池,其中线程池中线程数为中央处理单元(CPU)的逻辑内核数。
9.根据权利要求7的扫描任务的分配装置,其特征在于,所述扫描任务包括:垃圾文件扫描任务、临时文件扫描任务、历史访问痕迹扫描任务或病毒扫描任务。
10.根据权利要求7的扫描任务的分配装置,其特征在于,
扫描任务总队列分配单元,用于执行:
判断步骤:判断扫描任务总队列中剩余的扫描任务总数是否依然大于子任务队列总数n;
如果大于,则重复所述任务分配步骤、排序步骤和判断步骤循环执行,直到扫描任务总队列中的扫描任务总数小于子任务队列总数;
如果不大于,则将扫描任务总队列中剩余的扫描任务依次分配给所述排序后的子任务队列。
11.根据权利要求7-10中任意一项所述的扫描任务的分配装置,其特征在于,
扫描任务总队列分配单元,用于对于各个扫描任务,按照各自的上次扫描耗时进行从大到小排序。
CN201210185787.4A 2012-06-07 2012-06-07 一种扫描任务的分配方法和装置 Active CN102722417B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210185787.4A CN102722417B (zh) 2012-06-07 2012-06-07 一种扫描任务的分配方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210185787.4A CN102722417B (zh) 2012-06-07 2012-06-07 一种扫描任务的分配方法和装置

Publications (2)

Publication Number Publication Date
CN102722417A CN102722417A (zh) 2012-10-10
CN102722417B true CN102722417B (zh) 2015-04-15

Family

ID=46948194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210185787.4A Active CN102722417B (zh) 2012-06-07 2012-06-07 一种扫描任务的分配方法和装置

Country Status (1)

Country Link
CN (1) CN102722417B (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870334B (zh) * 2012-12-18 2017-05-31 中国移动通信集团公司 一种大规模漏洞扫描的任务分配方法及装置
CN103559443B (zh) * 2013-11-01 2017-07-14 北京奇虎科技有限公司 多核设备的病毒扫描方法和装置
CN105320555B (zh) * 2014-06-17 2019-05-24 腾讯科技(深圳)有限公司 在终端上执行任务的方法及装置
CN105224856A (zh) * 2014-07-02 2016-01-06 腾讯科技(深圳)有限公司 计算机系统检测方法及装置
CN104111877A (zh) * 2014-07-29 2014-10-22 广东能龙教育股份有限公司 一种基于线程调配引擎的线程资源动态调配系统和方法
CN105120323B (zh) * 2015-08-31 2018-04-13 暴风集团股份有限公司 一种分布式播放器任务调度的方法及系统
CN105426252A (zh) * 2015-12-17 2016-03-23 浪潮(北京)电子信息产业有限公司 一种分布式文件系统的线程分配方法及系统
CN107203552B (zh) * 2016-03-17 2021-12-28 阿里巴巴集团控股有限公司 垃圾回收方法及装置
CN107341050B (zh) * 2016-04-28 2022-12-27 北京京东尚科信息技术有限公司 基于动态线程池的服务处理方法和装置
CN106201696A (zh) * 2016-07-15 2016-12-07 东软集团股份有限公司 用于线程的方法和装置
CN107643944A (zh) * 2016-07-21 2018-01-30 阿里巴巴集团控股有限公司 一种处理任务的方法和设备
CN106572280B (zh) * 2016-10-12 2019-09-06 曙光信息产业(北京)有限公司 扫描文件的方法及系统
CN107967549B (zh) * 2016-10-20 2022-02-01 南京途牛科技有限公司 多流程任务处理装置与方法
CN106569891B (zh) * 2016-11-09 2021-01-29 苏州浪潮智能科技有限公司 一种存储系统中任务调度执行的方法和装置
CN107315627A (zh) * 2017-05-31 2017-11-03 北京京东尚科信息技术有限公司 一种自动化配置数据仓库并行任务队列的方法和装置
CN107239344A (zh) * 2017-06-05 2017-10-10 厦门美柚信息科技有限公司 分布式分配方法及系统
CN107632889A (zh) * 2017-06-28 2018-01-26 努比亚技术有限公司 一种实现服务降级的方法、设备及计算机可读存储介质
CN107450971B (zh) * 2017-06-29 2021-01-29 北京五八信息技术有限公司 任务处理方法及装置
CN109308214A (zh) * 2017-07-27 2019-02-05 北京京东尚科信息技术有限公司 数据任务处理方法和系统
CN107910041A (zh) * 2017-11-06 2018-04-13 上海林康医疗信息技术有限公司 一种用于精准提醒慢病患者按时服药的系统和方法
CN108009430B (zh) * 2017-12-22 2020-04-10 北京明朝万达科技股份有限公司 一种敏感数据快速扫描方法及装置
CN108492211A (zh) * 2018-04-04 2018-09-04 北京科东电力控制系统有限责任公司 应用于电力市场业务平台的计算方法及装置
CN108958896A (zh) * 2018-06-16 2018-12-07 温州职业技术学院 多线程并发处理系统及方法
CN110704517B (zh) * 2018-06-21 2023-01-17 北京国双科技有限公司 一种生成任务的方法、装置、存储介质及处理器
CN109947699B (zh) * 2018-08-14 2023-12-29 平安科技(深圳)有限公司 电子印章调用方法、装置、设备及可读存储介质
CN109976888B (zh) * 2019-03-25 2021-09-17 苏州达家迎信息技术有限公司 一种数据扫描方法、装置、设备和存储介质
CN110825700A (zh) * 2019-11-07 2020-02-21 成都品果科技有限公司 一种高效扫描磁盘中文件的方法
CN111198546B (zh) * 2020-01-02 2021-04-06 北京众信易保科技有限公司 一种数据采集控制的方法及系统
CN111666109B (zh) * 2020-06-08 2023-04-07 湖南快乐阳光互动娱乐传媒有限公司 一种优化局域网cifs共享设备自动扫描速度的方法及系统
CN112039792B (zh) * 2020-06-30 2024-05-28 浙江远望信息股份有限公司 一种避免拥塞的网络扫描调度方法
CN112333177A (zh) * 2020-10-29 2021-02-05 杭州迪普科技股份有限公司 扫描报告生成方法及装置
CN114693009A (zh) * 2020-12-25 2022-07-01 苏州国双软件有限公司 一种数据处理方法及装置
CN113110924A (zh) * 2021-04-08 2021-07-13 北京联创新天科技有限公司 一种通用多线程任务执行方法、装置、介质及设备
CN114721774A (zh) * 2022-04-02 2022-07-08 浙江数新网络有限公司 一种基于响应式编程单机单jvm实例的线程池

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101539800A (zh) * 2009-05-05 2009-09-23 曙光信息产业(北京)有限公司 一种低功耗作业调度计算方法
CN101599027B (zh) * 2009-06-30 2013-02-13 中兴通讯股份有限公司 一种线程池管理方法及其系统
CN101739242B (zh) * 2009-11-27 2013-07-31 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN101739293B (zh) * 2009-12-24 2012-09-26 航天恒星科技有限公司 一种基于多线程的卫星数据产品生产任务并行调度方法

Also Published As

Publication number Publication date
CN102722417A (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
CN102722417B (zh) 一种扫描任务的分配方法和装置
US8620932B2 (en) Parallel sorting apparatus, method, and program
US8286170B2 (en) System and method for processor thread allocation using delay-costs
JP4185103B2 (ja) 実行可能プログラムをスケジューリングするためのシステム及び方法
Che et al. Accelerating truss decomposition on heterogeneous processors
US20090070762A1 (en) System and method for event-driven scheduling of computing jobs on a multi-threaded machine using delay-costs
Megel et al. Minimizing task preemptions and migrations in multiprocessor optimal real-time schedules
CN110231986A (zh) 基于多fpga的动态可重配置的多任务调度和放置方法
CN108572872B (zh) 一种基于fpga可重构技术的资源管理方法
CN107329822B (zh) 面向多源多核系统的基于超任务网的多核调度方法
Han et al. Minimizing monetary costs for deadline constrained workflows in cloud environments
Berna et al. PDPA: period driven task and cache partitioning algorithm for multi-core systems
Tsai et al. Scheduling multiple scientific and engineering workflows through task clustering and best-fit allocation
Li et al. Energy-aware scheduling on multiprocessor platforms
CN110088730B (zh) 任务处理方法、装置、介质及其设备
Dahal et al. Scheduling in multiprocessor system using genetic algorithms
Xu et al. Hybrid scheduling deadline-constrained multi-DAGs based on reverse HEFT
Benini et al. Multi-stage Benders decomposition for optimizing multicore architectures
CN109086132A (zh) 一种人脸识别任务均衡调用方法、装置及终端设备
CN112130977B (zh) 一种任务调度方法、装置、设备及介质
Wang et al. Cost-effective scheduling precedence constrained tasks in cloud computing
Aoun et al. Pfair scheduling improvement to reduce interprocessor migrations
Daoud et al. High performance bitwise or based submesh allocation for 2d mesh-connected cmps
Senoussaoui et al. Allocation of real-time tasks onto identical core platforms under deferred fixed preemption-point model
Zhao et al. TDWS: A job scheduling algorithm based on MapReduce

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant