一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务调度方法、装置、设备及存储介质与流程

2021-10-24 07:40:00 来源:中国专利 TAG:调度 装置 实施 计算机 方法


1.本发明实施例涉及计算机技术领域,尤其涉及任务调度方法、装置、设备及存储介质。


背景技术:

2.线程池是一种多线程处理形式,处理过程中将任务添加到队列,通过线程池中的线程执行队列中的任务。
3.目前,构建线程池时需要设置线程数量以及线程空闲时存活时间等参数,需要合理配置参数才能达到较好效果,否则可能会造成线程空闲、任务阻塞或内存溢出等问题。然而,采用上述配置方式实现的现有的基于线程池的任务调度方案仍不够完善,需要改进。


技术实现要素:

4.本发明实施例提供了任务调度方法、装置、设备及存储介质,可以优化现有的基于线程池的任务调度方案。
5.第一方面,本发明实施例提供了一种任务调度方法,应用于线程池,所述线程池中包括核心队列和用于执行所述核心队列中任务的核心线程,所述方法包括:
6.接收第一任务的分配指示;
7.在所述核心队列的当前任务数量达到所述核心队列对应的任务数阈值的情况下,判断所述线程池中是否存在子队列;
8.若存在子队列,则将所述第一任务分配至子队列中,通过子队列对应的线程执行所述第一任务。
9.第二方面,本发明实施例提供了一种任务调度装置,应用于线程池,所述线程池中包括核心队列和用于执行所述核心队列中任务的核心线程,包括:
10.分配指示接收模块,用于接收第一任务的分配指示;
11.子队列判断模块,用于在所述核心队列的当前任务数量达到所述核心队列对应的任务数阈值的情况下,判断所述线程池中是否存在子队列;
12.任务分配模块,用于在所述子队列判断模块的判断结果为存在子队列时,将所述第一任务分配至子队列中,通过子队列对应的线程执行所述第一任务。
13.第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的任务调度方法。
14.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的任务调度方法。
15.本发明实施例中提供的任务调度方案,应用于线程池,线程池中包括核心队列和用于执行核心队列中任务的核心线程,接收第一任务的分配指示,在核心队列的当前任务数量达到核心队列对应的任务数阈值的情况下,判断线程池中是否存在子队列,若存在子
队列,则将第一任务分配至子队列中,通过子队列对应的线程执行第一任务。通过采用上述技术方案,对于线程池来说,可以设置多个用于分配任务的队列,包括核心队列和子队列,在需要分配新任务时,核心队列中的任务数量已经较多的情况下,若当前存在子队列,可以将任务分配至子队列中,由子队列对应的线程执行该任务,这样,核心线程和子队列对应的非核心线程可以互不干扰地并行地从不同的队列中取出任务进行执行,可以保证任务处理效率,相比于现有技术中核心线程和非核心线程均从同一个队列中取任务的方式来说,在高并发或多任务场景中,可以有效减少不同线程从同一队列中取任务时产生的冲突,保证任务执行的准确性。
附图说明
16.图1为本发明实施例提供的一种任务调度方法的流程示意图;
17.图2为本发明实施例提供的又一种任务调度方法的流程示意图;
18.图3为本发明实施例提供的一种线程池队列示意图;
19.图4为本发明实施例提供的一种任务调度装置的结构框图;
20.图5为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
21.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
22.为了便于理解本发明实施例,下面先对相关技术进行说明,现有的线程池为单队列线程池,也即线程池中仅有一个用于分配任务的队列,如果设置核心线程数较少但业务任务变多,会导致后面任务等待时间过长,另外,核心线程和非核心线程均需要从唯一队列中取出任务并执行,对于高并发或多任务场景中,在确定任务由哪个线程执行时,可能会存在冲突,就需要额外的时间或资源来处理这种冲突,影响任务处理效率,甚至可能会出错。
23.本发明实施例中,线程池中包括核心队列和用于执行核心队列中任务的核心线程,在线程池被创建后,一般核心队列和核心线程是可以长期存在的。在此基础上,还可以允许子队列的存在,核心线程和子队列对应的线程可以互不干扰地并行地从不同的队列中取出任务进行执行。其中,核心线程的数量不做限定,一般是多个。子队列可以存在一个或多个,子队列的创建时机和删除时机等不做限定。子队列对应的线程可以称为非核心线程,每个子队列可以对应一个或多个非核心线程,一般在子队列创建成功后,创建或分配对应的非核心线程。
24.图1为本发明实施例提供的一种任务调度方法的流程示意图,该方法适用于基于线程池进行多任务分配的情况,可以由任务调度装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。如图1所示,该方法包括:
25.步骤101、接收第一任务的分配指示。
26.示例性的,任务调度方法具体可以由线程池对应的任务调度者执行,任务调度者一般是在系统底层运行的调度程序,可以称为scheduler。系统中的任务分配事件触发时,
可以向任务调度者发送任务的分配指示,可理解为使用者将任务提交给任务调度者。任务分配事件的触发条件和触发方式等不做限定,可以根据具体的业务场景设定。
27.示例性的,第一任务可以是需要由线程池执行的任意一个任务。一般的,由线程池执行的是多任务,多个任务在业务上可以存在关联,提高业务处理效率。以直播业务场景为例,由于主播数量和粉丝数量较多,可能存在批量发送消息的需求,这里的消息可以是即时通信消息、主播上线通知以及主播任务完成弹窗等等,一次消息的发送可以认为是一个待分配的任务。以在线办公场景为例,组织内部成员数量较多,也可能存在批量发送文件的需求,一次文件的发送可以认为是一个待分配的任务。
28.步骤102、在所述核心队列的当前任务数量达到所述核心队列对应的任务数阈值的情况下,判断所述线程池中是否存在子队列。
29.示例性的,可以预先为核心队列设置任务数阈值,用于表示核心队列当前可以存入的最大任务数量。在接收到第一任务的分配指示后,可以先查看核心队列中当前已经存在的任务的数量,也即当前任务数量,判断当前任务数量是否已达到核心队列对应的当前的任务数阈值,若已达到,则可认为当前核心队列里任务已经较多,因此,可以考虑将第一任务分配至子队列。
30.本发明实施例中,子队列一般不需要实时存在,因为子队列的存在一般会占用一定的内存,当任务较少时,通过核心队列存储任务即可,因此,可以先判断线程池中是否存在子队列。子队列的创建时机不做限定,可以根据实际情况设置,例如,可以根据核心队列中的当前任务数量来确定,还可以根据核心队列中的任务数量的变化规律确定,如任务数量变化率达到预设变化率阈值时,说明核心队列中的任务数量在快速增加,可以创建子队列。对于存在多个子队列的情况,在判断是否需要创建新的子队列时,可以根据最近创建的子队列(如当前等级最低的子队列)中的任务数量的变化规律确定,如任务数量变化率达到预设变化率阈值时,说明该子队列中的任务数量在快速增加,可以创建新的子队列。
31.可选的,若当前任务数量未达到核心队列对应的任务数阈值,则可将第一任务分配至核心队列中,通过核心线程执行第一任务。
32.步骤103、若存在子队列,则将所述第一任务分配至子队列中,通过子队列对应的线程执行所述第一任务。
33.示例性的,若存在子队列,则可以将第一任务分配至子队列中,第一任务在该子队列中等待由子队列对应的线程来执行。本发明实施例中,也可以针对子队列设置对应的任务数阈值,若子队列中的当前任务数量也达到对应的任务数阈值时,可以采取相应的措施对第一任务的分配进行处理,例如,创建新的子队列或基于预设拒绝策略进行处理,预设拒绝策略例如可以是丢弃第一任务或者通知使用者对应的用户线程自行处理等。
34.示例性的,若当前存在多个子队列,则可以采用预设选择规则来选择其中一个子队列,将第一任务分配至该被选择的子队列中。其中,预设选择规则例如可以是随机选择,还可以选择当前任务数量最少的子队列,或者按照子队列的等级先后顺序选择等,具体不做限定。
35.本发明实施例中提供的任务调度方法,应用于线程池,线程池中包括核心队列和用于执行核心队列中任务的核心线程,接收第一任务的分配指示,在核心队列的当前任务数量达到核心队列对应的任务数阈值的情况下,判断线程池中是否存在子队列,若存在子
队列,则将第一任务分配至子队列中,通过子队列对应的线程执行第一任务。通过采用上述技术方案,对于线程池来说,可以设置多个用于分配任务的队列,包括核心队列和子队列,在需要分配新任务时,核心队列中的任务数量已经较多的情况下,若当前存在子队列,可以将任务分配至子队列中,由子队列对应的线程执行该任务,这样,核心线程和子队列对应的非核心线程可以互不干扰地并行地从不同的队列中取出任务进行执行,可以保证任务处理效率,相比于现有技术中核心线程和非核心线程均从同一个队列中取任务的方式来说,在高并发或多任务场景中,可以有效减少不同线程从同一队列中取任务时产生的冲突,保证任务执行的准确性。
36.在一些实施例中,在所述判断所述线程池中是否存在子队列之后,还包括:若不存在子队列,则创建第一子队列,并将所述第一任务分配至所述第一子队列中;在所述线程池中创建第一线程,通过所述第一线程执行所述第一任务。这样设置的好处在于,在确定核心线程目前无法继续存入任务且不存在子队列时,再创建子队列,可以有效避免子队列处于空闲状态而占用内存等资源。
37.在一些实施例中,对于存在至少两个子队列的情况,子队列的等级按照创建先后顺序依次降低;所述若存在子队列,则将所述第一任务分配至子队列中,包括:若存在子队列,则逐级向下查找当前任务数量小于对应的任务数阈值的子队列,将所述第一任务分配至首个查找到的子队列。这样设置的好处在于,可以设置多个子队列,且对于先后创建的子队列来说,先创建的子队列相当于后创建的子队列的父级子队列,通过层级关系的设置达到逐级创建子队列的效果,并按照层级关系优先将任务分配至等级较高的子队列,避免创建过多子队列而浪费内存等资源。需要说明的是,各子队列对应的任务数阈值可以相同,也可以不同,各子队列对应的任务数阈值与核心队列对应的任务数阈值可以相同,也可以不同。
38.在一些实施例中,还包括:若未查找到当前任务数量小于对应的任务数阈值的子队列,则判断所述线程池中的当前队列数量是否达到预设队列数阈值;若未达到所述预设队列数阈值,则创建当前等级最低的子队列下级的第二子队列,将所述第一任务分配至所述第二子队列中;在所述线程池中创建第二线程,通过所述第二线程执行所述第一任务。这样设置的好处在于,通过设置预设队列数阈值,对线程池中的队列总数进行限制,有效控制队列对内存资源的占用,在未达到预设队列数阈值之前,可以继续创建新的子队列以及对应的线程,保证任务执行效率。
39.在一些实施例中,在所述判断所述线程池中的当前队列数量是否达到预设队列数阈值之后,还包括:若达到所述预设队列数阈值,则对所述核心队列的任务数阈值进行上调,得到新的任务数阈值,并将所述第一任务分配至所述核心队列中,其中,所述新的任务数阈值小于或等于所述核心队列对应的预设最大任务数阈值。这样设置的好处在于,逐渐对核心队列的任务数阈值进行上调,而不是一次性将任务数阈值设置到预设最大任务数阈值,相当于形成了核心队列中的缓冲区域,避免核心队列长期处于满负荷的状态,充分利用下级的子队列,另外,对于高并发场景,可能队尾临界处的任务已确定由某个核心线程执行,因此任务调度者会认为核心队列是未满的,但实际上核心线程还未来得及将该任务取出,同时很快又要分配新的任务,任务调度者会将新任务分配至核心队列,但实际上核心队列已经满了,会导致新任务无法放入核心队列中,从而导致出错,通过设置缓冲区,以当前
任务数阈值(未上调之前)进行判定的情况下,实际上核心队列并未满,是可以放入新任务的,可以减少这种出错的概率。需要说明的是,上调的幅度和次数不做限定,可选的,上调次数为1次,直接上调至预设最大任务数阈值。
40.在一些实施例中,在对所述核心队列的任务数阈值进行上调的同时或之后,还包括:对子队列对应的任务数阈值进行上调,得到对应的新的任务数阈值,其中,各子队列对应的新的任务数阈值小于或等于对应的子队列的预设最大任务数阈值。这样设置的好处在于,当核心队列的任务数阈值进行上调时,说明当前需要分配的任务数量较多,及时上调子队列对应的任务数阈值,便于应对任务高并发情况,提高任务分配效率。需要说明的是,各子队列对应的预设最大任务数阈值可以相同,也可以不同,各子队列对应的预设最大任务数阈值与核心队列对应的预设最大任务数阈值可以相同,也可以不同。
41.在一些实施例中,还包括:响应于队列扫描事件被触发,从当前等级最低的子队列开始,按照等级从低至高的顺序查找任务数量为空的队列,其中,子队列的等级按照创建先后顺序依次降低;在确定存在目标子队列时,释放所述目标子队列的内存以及销毁所述目标子队列对应的线程,其中,所述目标子队列包括自身任务数量为空且上一级队列任务数量为空的子队列。这样设置的好处在于,可以动态灵活地确定子队列的删除时机以及对应线程的销毁时机,相比于现有技术中预先设定线程空闲时存活时间的方案来说,可有效提高线程利用率。需要说明的是,核心队列是一直存在的,各子队列是可以被删除的,对于紧邻核心队列的子队列(也即第一个创建的子队列)来说,若核心队列的任务数量为空,则该子队列也可以成为目标子队列。其中,释放所述目标子队列的内存,可以理解为删除目标子队列。
42.在一些实施例中,在所述接收到第一任务的分配指示之前,还包括:获取线程池对应的配置信息,其中,所述配置信息包括核心线程数量、预设线程数阈值、各队列对应的任务数阈值的初始值、各队列对应的预设最大任务数阈值、以及预设队列数阈值;根据所述配置信息初始化线程池对应的核心队列以及核心线程。这样设置的好处在于,开发人员可以根据实际的业务场景预先配置线程池的上述参数,可以写入配置文件或直接写入对应的程序代码中,在需要对线程池进行初始化时,直接获取上述配置信息进行初始化。
43.在一些实施例中,所述第一任务包括直播业务场景中向主播侧或粉丝侧批量发送消息时的任务。这样设置的好处在于,直播业务场景中,由于主播数量和粉丝数量较多,且活动比较丰富,任务数量的波动情况可能较大,通过采用上述技术方案,可以有效提高任务分配效率,减少主播或粉丝收到消息或弹窗等通知的等待时间,灵活动态地确定子队列的删除时机和对应线程的销毁时机,可以更好地应对任务数量波动较大的情况,提高线程利用率,减少资源浪费,从整体上提高直播业务系统的性能。
44.在相关技术中,尤其是在高并发或多任务场景中,如果线程池参数设置不够准确,有可能导致任务等待时间过长,或者线程的频繁创建和销毁,而线程的创建销毁是需要消耗和内存方面的资源,反复创建和销毁线程是对系统非常不利的。例如,如果设置的核心线程数较小,任务数如果突增突降,那么可能会造成任务队列长度过长或者线程数频繁波动,从而导致后续的任务等待时间过长以及资源消耗问题;如果设置的核心线程较多,那么如果设置线程存活时间较长,就会导致任务数较少时线程占用内存浪费资源,而如果设置线程存活时间较短,就会在任务数频繁波动时频繁创建和销毁线程。虽然可以根据具体业务
场景定制自己的线程池参数,但是如果业务场景不稳定或者有变化,固定的线程池参数就需要优化。所以按照现有的线程池调度方案,可能在任务数量不断变换等情况下,造成任务执行效率不够高,以及资源浪费等问题。
45.相关技术中采用单队列线程池,如果设置核心线程数过少但业务任务变多,会导致后面任务等待时间过长,而本发明实施例中采用分段队列,也即在核心队列基础上允许创建一个或多个子队列,在当前队列中的任务数达到相应阈值之后,会创建以当前队列为父队列的子队列,然后创建一个新的线程去执行新队列中的任务,缩短了后面任务的等待时间。相关技术中,线程核心数和线程存活时间很难根据业务精确定位,而本发明实施例中使用依赖队列变化情况来预测线程最高性价比存活时间的方案,如果发现某个队列长度和它的父队列的长度都为零,则此时可以释放此队列内存并销毁此队列所对应的线程,这种方式,可以有效的通过前面队列的长度来预测总体任务的数量,从而定位到销毁线程的最佳时机,而不是按照以往的通过设置固定的线程存活时间,有效提高了线程利用率,虽然创建多个队列也会产生内存开销,但这部分开销会比线程的创建和销毁要小很多。
46.本发明实施例中,可以设置的配置信息可以包括核心线程数量(可称为coresize)、预设线程数阈值(也即最大创建线程数量,可称为maxthreadsize)、各队列对应的任务数阈值的初始值(也即每个队列触发分段时候的最大任务数量,可称为queuecoresize,其中,触发分段指创建下级的子队列)、各队列对应的预设最大任务数阈值(也即每个队列最大放置任务数量,可称为queuemaxsize)、以及预设队列数阈值(也即线程池最大分段队列数量,可称为maxqueuecount)。为了便于说明,以核心队列和各子队列对应的任务数阈值的初始值均相同,预设最大任务数阈值均相同为例进行后续说明,另外,以子队列和线程是一对一的关系为例进行说明,此时,maxqueuecount

1=maxthreadsize

coresize,其中,1表示核心队列,因此,maxqueuecount和maxthreadsize也可择一进行配置。
47.图2为本发明实施例提供的又一种任务调度方法的流程示意图,图3为本发明实施例提供的一种线程池队列示意图,可结合图2和图3对本发明实施例的技术方案进行进一步理解。
48.示例性的,该方法可以由任务调度者执行,如图2所示,具体可包括:
49.步骤201、接收第一任务的分配指示。
50.示例性的,在本步骤之前,还可包括:接收线程池启动指示,获取线程池对应的配置信息,根据配置信息初始化线程池对应的核心队列以及核心线程。假设核心队列记为q1,核心线程数量为3个,则初始化3个核心线程,可分别记为t1、t2和t3,由t1、t2和t3负责执行q1中的任务。
51.可选的,queuemaxsize与maxqueuecount的乘积可以参考相关调度方案中单队列的队列大小(可记为queuesize)来设定。例如,单队列queuesize=4000,若设置maxqueuecount=4,那么maxqueuesize可以设置为1000。
52.步骤202、判断核心队列的当前任务数量是否达到任务数阈值,若是,则执行步骤203;否则,执行步骤208。
53.参考图3,任务到达任务调度者之后,先判断核心队列的当前任务数量(记为ql1)是否小于任务数阈值,若小于则可将任务放入q1中,队列里的任务由核心线程执行,如果已
达到任务数阈值,则需要考虑放入子队列中。
54.步骤203、按照子队列的等级确定当前子队列。
55.需要说明的是,若当前不存在子队列,可直接跳转至执行步骤210。
56.步骤204、判断当前子队列的当前任务数量是否达到任务数阈值,若是,则执行步骤205;否则,执行步骤209。
57.如图3所示,当ql1大于或等于任务数阈值时,可先判断是否存在子队列,若不存在则创建子队列,然后将任务放入子队列。若已存在q2和q3,先将q2确定为当前子队列,若ql2(q2中的当前任务数量)小于任务数阈值,则可将任务存入q2,若ql2大于或等于任务数阈值,则可将q3确定为当前子队列,若ql3(q3中的当前任务数量)小于任务数阈值,则可将任务存入q3,若ql3大于或等于任务数阈值,则需要考虑是否可以创建新的子队列。
58.步骤205、判断是否存在未判定的子队列,若是,则返回执行步骤203;否则,执行步骤206。
59.步骤206、判断线程池中的当前队列数量是否达到预设队列数阈值,若是,则执行步骤207;否则,执行步骤210。
60.示例性的,如图3所示,预设队列数阈值可以为3,也即,除了核心队列以外,可以创建2个子队列,分别记为q2和q3,当然,根据实际需求,可以将预设队列数阈值设置的更高,从而可以创建更多的子队列。
61.若预设队列阈值为3,且ql3大于或等于任务数阈值,则说明当前无法继续创建子队列,则考虑使用缓冲区域,也即执行步骤207。
62.步骤207、将核心队列和和子队列的任务数阈值上调至预设最大任务数阈值,继续执行步骤202。
63.示例性的,缓冲区域可设置得小一些,也即任务数阈值小于但接近于预设最大任务数阈值,例如,queuecoresize=90%*queuemaxsize。如上述举例,queuecoresize可以为900。
64.需要说明的是,若此时任务数阈值已经等于预设最大任务数阈值,则可结束流程,按照预设拒绝策略处理待分配的任务。
65.示例性的,在将任务数阈值上调后,缓冲区开放,任务可以存入核心队列,若随着任务数量越来越多,核心队列已满,则可逐级向下存入子队列的缓冲区中。
66.步骤208、将第一任务分配至核心队列中,执行步骤211。
67.示例性的,将第一任务入队核心队列队尾,等待核心线程的处理。
68.步骤209、将第一任务分配至当前子队列中,执行步骤211。
69.示例性的,将第一任务入队当前子队列队尾,假设当前子队列为qx,对应的线程为tx,则可等待线程tx对第一任务进行处理。
70.步骤210、创建新的子队列,并将第一任务分配至新的子队列中,在线程池中创建新的线程,通过新的线程执行第一任务。
71.示例性的,假设当前最后一个子队列为qx,则以qx为父节点,创建qx 1子队列以及tx 1线程,并将第一任务放入qx 1子队列,由tx 1线程负责执行。
72.步骤211、判断队列扫描事件是否被触发,若是,则执行步骤212;否则,结束流程。
73.需要说明的是,步骤211与其他步骤的先后顺序不做限定,也可并行执行。队列扫
描事件可以是定时触发或周期性触发,以便及时删除需要删除的子队列以及销毁相应的线程。
74.步骤212、从当前等级最低的子队列开始,按照等级从低至高的顺序查找任务数量为空的队列,在确定存在目标子队列时,释放目标子队列的内存以及销毁目标子队列对应的线程。
75.其中,所述目标子队列包括自身任务数量为空且上一级队列任务数量为空的子队列。例如,存在队列qn为空且其父队列qn

1也为空,则将队列qn确定为目标子队列,释放队列qn的内存,并销毁对应的线程tn。
76.本发明实施例提供的任务调度方法,采用分段队列,当前队列中的任务数达到相应阈值之后,会创建以当前队列为父队列的子队列,然后创建一个新的线程去执行新队列中的任务,缩短了后面任务的等待时间,依赖队列中任务数量的变化情况来预测线程最高性价比存活时间,从而更加灵活合理地创建和销毁线程,有效优化了频繁销毁和创建线程带来的资源损耗,并能有效提高线程利用率,在进行线程池配置时,可以减少对业务任务情况和线程存活时间的详细分析工作,转而进行队列数量的规划,从整体上减少开发工作,提高线程池配置效率。
77.图4为本发明实施例提供的一种任务调度装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,应用于线程池,所述线程池中包括核心队列和用于执行所述核心队列中任务的核心线程,该装置可通过执行任务调度方法来进行任务调度。如图4所示,该装置包括:
78.分配指示接收模块401,用于接收第一任务的分配指示;
79.子队列判断模块402,用于在所述核心队列的当前任务数量达到所述核心队列对应的任务数阈值的情况下,判断所述线程池中是否存在子队列;
80.任务分配模块403,用于在所述子队列判断模块的判断结果为存在子队列时,将所述第一任务分配至子队列中,通过子队列对应的线程执行所述第一任务。
81.本发明实施例中提供的任务调度装置,应用于线程池,线程池中包括核心队列和用于执行核心队列中任务的核心线程,接收第一任务的分配指示,在核心队列的当前任务数量达到核心队列对应的任务数阈值的情况下,判断线程池中是否存在子队列,若存在子队列,则将第一任务分配至子队列中,通过子队列对应的线程执行第一任务。通过采用上述技术方案,对于线程池来说,可以设置多个用于分配任务的队列,包括核心队列和子队列,在需要分配新任务时,核心队列中的任务数量已经较多的情况下,若当前存在子队列,可以将任务分配至子队列中,由子队列对应的线程对执行该任务,这样,核心线程和子队列对应的非核心线程可以互不干扰地并行地从不同的队列中取出任务进行执行,可以保证任务处理效率,相比于现有技术中核心线程和非核心线程均从同一个队列中取任务的方式来说,在高并发或多任务场景中,可以有效减少不同线程从同一队列中取任务时产生的冲突,保证任务执行的准确性。
82.本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的任务调度装置。图5为本发明实施例提供的一种计算机设备的结构框图。计算机设备500包括存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序,所述处理器502执行所述计算机程序时实现本发明实施例提供的任务调度方法。
83.本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的任务调度方法。
84.上述实施例中提供的任务调度装置、设备以及存储介质可执行本发明任意实施例所提供的任务调度方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的任务调度方法。
85.注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜