一种任务管理方法、装置、电子设备及存储介质与流程



1.本发明涉及计算机技术领域,尤其涉及一种任务管理方法、装置、电子设备及存储介质。


背景技术:



2.随着计算机技术的不断发展,计算机设备的任务处理能力,尤其是多任务的并发处理能力得到了迅速提高,这也对计算机设备的任务管理能力提出了更高要求。
3.现有技术中,计算机设备是将任务请求加入到消息队列,通过多线程分别执行消息队列中的各个待处理任务,而为了避免多个任务同时操作同一个资源时,通常会对资源进行加锁以保证资源安全。
4.然而这样的任务处理方式,使得线程被长时间占用,线程的利用率较低,并且常常导致死锁现象发生,同时大量任务处于挂起等待状态,降低了任务处理效率。


技术实现要素:



5.本发明提供了一种任务管理方法、装置、电子设备及存储介质,以解决互斥任务导致的死锁问题。
6.根据本发明的一方面,提供了一种任务管理方法,包括:
7.遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息;
8.若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
9.在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则为所述当前待处理任务设置互斥标签,并将所述当前待处理任务放回所述消息队列;响应于再次遍历到所述当前待处理任务,基于所述互斥标签将所述当前待处理任务,依次与互斥线程中的运行任务以及非互斥线程中的运行任务进行双向互斥比对。根据互斥标签将待处理任务优先与互斥线程中的运行任务进行比对,若确定待处理任务与互斥线程中的运行任务仍然存在互斥,即可直接将该待处理任务放回消息队列,减少了待处理任务的互斥比对次数,提高了互斥比对效率;同时,依次与互斥线程中的运行任务以及非互斥线程中的运行任务进行比对,也确保了互斥比对结果的准确性。
10.所述根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对,具体包括:根据任务触发类型对各所述运行任务进行排序;其中,所述任务触发类型包括后台触发任务、定时触发任务和用户触发任务;根据排序结果,将所述当前待处理任务依次与各所述运行任务进行双向
互斥比对。使得待处理任务优先与相同触发类型的运行任务进行互斥比对,进一步提高互斥比对效率。
11.所述任务管理方法还包括:响应于获取到任务请求,根据所述任务请求创建新任务;将所述新任务进行初始化,以通过配置文件获取所述新任务的任务互斥信息;将初始化完成的新任务放入所述消息队列。不但减少了任务请求的传输数据量,也避免了对任务请求的互斥信息依赖,同时,配置文件也提高了对互斥任务的管理便利性。
12.在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则获取所述互斥任务的预测完成耗时;若所述消息队列的预测遍历时间与所述预测完成耗时的差值大于等于第一预设阈值,则将所述当前待处理任务发送至倒计时队列,并根据所述预测完成耗时为所述当前待处理任务设置倒计时器;响应于检测到所述倒计时器倒计时完成,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。通过互斥任务运行结束后出现的空闲线程直接执行当前待处理任务,相比于将当前待处理任务放回消息队列以等待下次遍历,极大地提高了当前待处理任务的处理时效性,也提高了线程利用率,减少了空闲线程的等待时间。
13.在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第一指定互斥任务所在的第一线程中,以在所述第一线程中等待执行所述当前待处理任务;响应于检测到所述第一线程中的所述第一指定互斥任务处理完毕,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过所述第一线程执行所述当前待处理任务。在提高待处理任务处理效率的同时,减少了第一线程的空闲等待时间,提高了第一线程的利用率。
14.在将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第二指定互斥任务所在的第二线程中,以在所述第二线程中等待执行所述当前待处理任务。避免了待处理任务在第一线程中的等待导致第一线程被长时间占用,以此释放被占用的第一线程,而第一线程可以分配给消息队列中的其它待处理任务使用,进一步提高了线程利用率。
15.根据本发明的另一方面,提供了一种任务管理装置,包括:
16.互斥比对执行模块,用于遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息;
17.任务处理执行模块,用于若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
18.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
19.至少一个处理器;以及
20.与所述至少一个处理器通信连接的存储器;其中,
21.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的任务管理方法。
22.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的任务管理方法。
23.本发明实施例的技术方案,通过遍历消息队列中的待处理任务,并基于任务描述信息和任务互斥信息,将当前待处理任务与运行任务进行双向互斥比对,若运行任务中不存在当前待处理任务的互斥任务,通过线程池执行当前待处理任务,确保了存在互斥行为的互斥任务不同时运行,避免了死锁现象的发生,提高了系统安全性能;同时,相比于对设备资源进行加锁,避免了线程长时间被占用,提高了线程利用率,进而提高了任务处理效率。
24.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
25.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1是根据本发明实施例一提供的一种任务管理方法的流程图;
27.图2是根据本发明实施例二提供的一种任务管理方法的流程图;
28.图3是根据本发明实施例三提供的一种任务管理方法的流程图;
29.图4是根据本发明实施例四提供的一种任务管理装置的结构示意图;
30.图5是实现本发明实施例的任务管理方法的电子设备的结构示意图。
具体实施方式
31.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
32.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
33.实施例一
34.图1为本发明实施例一提供的一种任务管理方法的流程图,本实施例可适用于根据待处理任务与运行任务之间的双向互斥比对,避免互斥任务的同时运行,该方法可以由任务管理装置来执行,该任务管理装置可以采用硬件和/或软件的形式实现,该任务管理装置可配置于服务器等电子设备中,典型的,可以配置于管理服务器中。如图1所示,该方法包括:
35.s101、遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息。
36.任务信息中不但定义了当前任务的操作类型、操作对象以及占用的系统资源等描述性信息,还定义了当前待处理任务执行时,其它运行任务不能执行的操作类型、操作对象以及占用的系统资源等排斥性信息,即当前任务的互斥信息;任务信息可以由任务请求的请求发出方提供,即请求发出方在发出任务请求时,管理服务器根据请求发出方提供的任务信息,创建该处理任务。
37.例如,当前待处理任务为节点删除,即管理服务器将某个业务服务器的配置信息进行删除,不再将该业务服务器作为节点设备,此时互斥任务为节点修改,即管理服务器修改该业务服务器的配置信息,显然,在对一个节点进行删除操作时,不能同时存在该节点的修改操作,上述节点删除操作会导致该节点的修改操作未能执行完成,进而导致系统故障或者系统报警;可选的,在本发明实施例中,对待处理任务的任务类型不作具体限定;特别的,在本发明实施例中,节点可以为接入管理服务器的业务服务器,也可以为管理服务器自身具备的功能模块。
38.在执行双向互斥比对时,可以根据所有运行任务的任务信息,分别绘制运行描述列表和运行互斥列表;其中,运行描述列表记录了所有运行任务的任务描述信息,将当前待处理任务的任务互斥信息与运行描述列表进行比对,以判断各个运行任务是否为当前待处理任务的互斥任务;运动互斥列表记录了所有运行任务的任务互斥信息,将当前待处理任务的任务描述信息与运行互斥列表进行比对,以判断当前待处理任务是否为一个或多个运行任务的互斥任务。
39.如果当前待处理任务的任务互斥信息中包括一个或多个运行任务的任务描述信息,即上述一个或多个运行任务的运行,会影响当前待处理任务的正常运行,上述一个或多个运行任务与当前待处理任务之间即为互斥任务;同样的,如果一个或多个运行任务的任务互斥信息中包括当前待处理任务的任务描述信息,即当前待处理任务的运行,会影响上述一个或多个运行任务的运行,当前待处理任务与上述一个或多个运行任务之间同样也为互斥任务。
40.在消息队列中执行遍历操作时,管理服务器可以根据自身预先设定的遍历逻辑,依次遍历各个待处理任务,并在获取到可执行的待处理任务时,将当前待处理任务发送给线程池的执行队列,而线程池则通过管理执行队列的方式管理可执行的待处理任务,以避免出现可执行任务的堵塞;管理服务器也可以基于线程池中的空闲线程,即获取到线程池
发送的空闲线程标识,或者检测到线程池中存在空闲线程时,执行遍历操作,并在获取到可执行的待处理任务时,将当前待处理任务发送给该空闲线程,以此实现基于空闲线程的遍历操作,当不存在空闲线程时,管理服务器暂停遍历操作,以等待新的空闲线程出现。
41.s102、若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
42.如果当前待处理任务的任务互斥信息中不包括任何运行任务的任务描述信息,且所有运行任务的任务互斥信息中也不包括当前待处理任务的任务描述信息,则表明运行任务中不存在当前待处理任务的互斥任务;如上述技术方案所述,如果管理服务器基于自身的遍历逻辑执行遍历操作,将当前待处理任务发送给线程池的执行队列,线程池通过执行队列获取该处理任务;如果管理服务器基于空闲线程执行遍历操作,则将当前待处理任务直接发送给该空闲线程。
43.如果当前待处理任务的任务互斥信息中包括任意运行任务的任务描述信息,或者任意运行任务的任务互斥信息中包括当前待处理任务的任务描述信息,则表明运行任务中存在当前待处理任务的互斥任务,此时将当前待处理任务放回消息队列中,并继续遍历获取下一个待处理任务。特别的,任务信息中记录的任务互斥信息,还可以包括阻塞互斥信息和非阻塞互斥信息;其中,若运行任务中存在当前待处理任务的阻塞互斥任务,且不存在当前待处理任务的非阻塞任务时,将当前待处理任务放回消息队列;若运行任务中存在当前待处理任务的非阻塞互斥任务时,删除当前待处理任务,以避免存在非阻塞互斥任务时,当前待处理任务处于无意义的等待状态,避免消息队列无效处理任务的堆积。
44.可选的,在本发明实施例中,在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则为所述当前待处理任务设置互斥标签,并将所述当前待处理任务放回所述消息队列;响应于再次遍历到所述当前待处理任务,基于所述互斥标签将所述当前待处理任务,依次与互斥线程中的运行任务以及非互斥线程中的运行任务进行双向互斥比对。
45.具体的,由于每个运行任务均是通过线程池中的线程执行,因此在加入互斥标签时,可以将互斥任务标识和/或互斥线程标识添加至互斥标签中,当再次遍历到上述待处理任务时,根据互斥标签将上述待处理任务优先与互斥线程中的运行任务进行比对,当确定当前待处理任务与互斥线程中的运行任务仍然存在互斥时,即可直接将当前待处理任务放回消息队列,减少了当前待处理任务的互斥比对次数,提高了互斥比对效率;同时,依次与互斥线程中的运行任务以及非互斥线程中的运行任务进行比对,也确保了双向互斥比对结果的准确性。
46.可选的,在本发明实施例中,所述根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对,具体包括:根据任务触发类型对各所述运行任务进行排序;其中,所述任务触发类型包括后台触发任务、定时触发任务和用户触发任务;根据排序结果,将所述当前待处理任务依次与各所述运行任务进行双向互斥比对。
47.具体的,后台触发任务,即各个业务节点在处理任务时向管理服务器索要任务资源的任务,任务发起方为各个业务节点;定时触发任务,是管理服务器自身发起的检测任
务,任务发起方即为管理服务器;用户触发任务,是由用户终端发起的任务请求;显然,相同触发类型的任务,互斥的可能性更大;因此在将当前待处理任务与各个运行任务进行比对时,还可以根据当前待处理任务的触发类型,将各个运行任务基于触发类型进行排序,以使当前待处理任务优先与相同触发类型的运行任务进行双向互斥比对,进一步提高双向互斥比对效率。
48.可选的,在本发明实施例中,所述任务管理方法还包括:响应于获取到任务请求,根据所述任务请求创建新任务;将所述新任务进行初始化,以通过配置文件获取所述新任务的任务互斥信息;将初始化完成的新任务放入所述消息队列。
49.具体的,管理服务器在获取到任务请求时,根据任务请求直接获取任务描述信息,例如,当前任务的触发类型、操作类型、操作对象以及占用的系统资源,而在获取到任务描述信息后,则在配置文件中,根据上述描述信息获取匹配的互斥信息;例如,当前任务请求为修改节点a的配置信息;根据配置文件可以确定,与修改操作对应的互斥行为为删除操作,那么对应的互斥信息即为删除节点a,以此通过配置文件即可获取每个待处理任务的互斥信息;相比于互斥信息由任务请求的发送方同步提供,不但减少了任务请求中的传输数据量,也避免了对任务请求的互斥信息依赖,同时,配置文件也提高了对互斥任务的管理便利性。
50.本发明实施例的技术方案,通过遍历消息队列中的待处理任务,并基于任务描述信息和任务互斥信息,将当前待处理任务与运行任务进行双向互斥比对,若运行任务中不存在当前待处理任务的互斥任务,通过线程池执行当前待处理任务,确保了存在互斥行为的互斥任务不同时运行,避免了死锁现象的发生,提高了系统安全性能;同时,相比于对设备资源进行加锁,避免了线程长时间被占用,提高了线程利用率,进而提高了任务处理效率。
51.实施例二
52.图2为本发明实施例二提供的一种任务管理方法的流程图,本实施例与上述实施例之间的关系在于,若运行任务中存在当前待处理任务的互斥任务,则获取互斥任务的预测完成耗时,并基于预测完成耗时处理当前待处理任务。如图2所示,该方法包括:
53.s201、遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息。
54.s202、若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则获取所述互斥任务的预测完成耗时。
55.预测完成耗时,是根据任务触发类型(例如,后台触发任务、定时触发任务和用户触发任务)和/或任务操作类型(例如,节点修改操作、节点新增操作和节点删除操作),以当前时刻为计时起点,预测任务运行结束所需的时间;如果当前待处理任务仅对应一个互斥任务,预测完成耗时即为该互斥任务运行结束所需的时间;如果当前待处理任务对应多个互斥任务,预测完成耗时即为所有互斥任务均已运行结束所需的时间,也即各个互斥任务运行结束所需时间中的最大值;预测完成耗时的时间数值表示当前运行任务中的各个互斥任务经过上述时间数值后均已运行结束。
56.s203、若所述消息队列的预测遍历时间与所述预测完成时间的差值大于等于第一
预设阈值,则将所述当前待处理任务发送至倒计时队列,并为所述当前待处理任务设置倒计时器。
57.预测遍历时间,是对消息队列中的所有待处理任务完成一次遍历所需的时间;由于在对待处理任务进行遍历的同时,还需要将待处理任务与运行任务进行双向互斥比对,因此,预测遍历时间与运行任务数量以及待处理任务数量均为正相关关系;在根据运行任务数量以及待处理任务数量获取到预测遍历时间之后,将预测遍历时间与预测完成时间的差值,与第一预设阈值进行比对;如果预测遍历时间与预测完成时间的差值较大,即大于第一预设阈值,表明将当前待处理任务放回消息队列后,再次遍历到该待处理任务所需的时间较长,而经过较短时间(即预测完成时间),当前运行任务中的各个互斥任务即已全部运行结束,可通过互斥任务运行结束后出现的空闲线程直接执行该待处理任务。
58.s204、响应于检测到所述倒计时器倒计时完成,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对。
59.当倒计时完成时,还需要将上述待处理任务再次与各个运行任务进行比对,因此,可能存在一个或多个互斥任务出现运行延迟现象,导致未能运行完成,同时,在倒计时器倒计时过程中,也可能一个或多个线程中已更换了运行任务,新的运行任务与上述待处理任务产生了新的互斥,由此,避免原有互斥任务的运行延迟以及新互斥任务的出现,导致待处理任务运行时产生死锁现象。
60.s205、若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
61.本发明实施例的技术方案,若运行任务中存在当前待处理任务的互斥任务,且消息队列的预测遍历时间与互斥任务的预测完成耗时的差值大于等于第一预设阈值,则将当前待处理任务发送至倒计时队列,并在倒计时完成且再次双向互斥比对确认不存在互斥任务时,通过线程池执行当前待处理任务,使得通过互斥任务运行结束后出现的空闲线程直接执行该待处理任务,相比于将当前待处理任务放回消息队列以等待下次遍历,极大地提高了当前待处理任务的处理时效性,也提高了线程利用率,减少了空闲线程的等待时间。
62.实施例三
63.图3为本发明实施例三提供的一种任务管理方法的流程图,本实施例与上述实施例之间的关系在于,如果运行任务中当前待处理任务的互斥任务数量小于等于第二预设阈值,则将当前待处理任务发送给指定互斥任务所在的线程中等待执行。如图3所示,该方法包括:
64.s301、遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息。
65.s302、若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第一指定互斥任务所在的第一线程中,以在所述第一线程中等待执行所述当前待处理任务;执行s305。
66.如果运行任务中存在当前待处理任务的互斥任务,那么当前待处理任务的运行,需要等待该互斥任务运行结束之后才能运行;因此,当第二预设阈值等于1时,即互斥任务数量为一个时,将当前待处理任务发送至该互斥任务所在的线程中,并在该线程中排队,等
待该线程执行完成当前互斥任务;当第二预设阈值大于1时,例如,互斥任务数量为两个时,可以根据各个互斥任务的预测完成耗时,将当前待处理任务发送给耗时最长(即最晚运行结束)的互斥任务所在的线程中,以使当前待处理任务在该线程中排队,等待该线程执行完成当前互斥任务。特别的,在将当前待处理任务发送至匹配的线程,以使当前待处理任务在该线程中排队之后,管理服务器继续遍历消息队列中的其它待处理任务。
67.s303、若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量大于第二预设阈值,则将所述当前待处理任务放回所述消息队列。
68.当互斥任务数量较多,即大于第二预设阈值时,并不能准确判断当前待处理任务具体在哪个线程中执行,且预测完成耗时本身为预测数值,存在一定的预测误差,多个互斥任务对应的多个预测完成耗中,增加了存在预测误差的可能性,因此,将当前待处理任务放回消息队列,以避免将当前待处理任务分配至不匹配的线程中,导致当前待处理任务的等待时间过长。
69.s304、若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
70.如果不存在互斥任务,通过线程池中的任意空闲线程执行当前待处理任务即可。
71.s305、响应于检测到所述第一线程中的所述第一指定互斥任务处理完毕,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对。
72.当检测到第一线程中的第一指定互斥任务处理完成时,第一线程之外的其它线程中可能已更换了运行任务,更换后的运行任务可能与当前待处理任务产生了新的互斥,同时,第一线程之外的其它线程中也可能存在任务处理延时,导致本该运行结束的原有互斥任务并未运行结束,导致与当前待处理任务仍然存在互斥,因此,在第一线程中的第一指定互斥任务处理完成后,在执行当前待处理任务之前,还需要将当前待处理任务与各个运行任务再次进行双向互斥比对。
73.s306、若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过所述第一线程执行所述当前待处理任务。
74.在将当前待处理任务与各个运行任务再次进行双向互斥比对后,如果不存在互斥任务,通过第一线程直接执行上述当前待处理任务即可;在提高上述待处理任务处理效率的同时,减少了第一线程的空闲等待时间,提高了第一线程的利用率。
75.s307、若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第二指定互斥任务所在的第二线程中,以在所述第二线程中等待执行所述当前待处理任务。
76.如上述技术方案所述,如果其他线程中更换了运行任务后,新运行任务与当前待处理任务存在新互斥,或者其它线程中的原有互斥任务未运行结束,原有互斥任务与当前待处理任务依然存在互斥,此时,将当前待处理任务继续发送至耗时最长的互斥任务(即第二指定互斥任务)所在的第二线程中,避免当前待处理任务在第一线程中的等待导致第一线程被长时间占用,以此释放被占用的第一线程,而第一线程可以分配给消息队列中的其它待处理任务使用,进一步提高线程利用率。
77.s308、若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量大于第二预设阈值,则将所述当前待处理任务放回所述消息队列。
78.本发明实施例的技术方案,若运行任务中存在当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将当前待处理任务发送至第一指定互斥任务所在的第一线程中,以在第一线程中等待执行当前待处理任务,当第一指定互斥任务处理完毕,将当前待处理任务与运行任务再次进行双向互斥比对,如果不存在互斥任务,则通过第一线程执行当前待处理任务,在提高上述待处理任务处理效率的同时,减少了第一线程的空闲等待时间,提高了第一线程的利用率。
79.实施例四
80.图4是本发明实施例四所提供的一种任务管理装置的结构框图,该装置具体包括:
81.互斥比对执行模块401,用于遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息;
82.任务处理执行模块402,用于若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
83.本发明实施例的技术方案,通过遍历消息队列中的待处理任务,并基于任务描述信息和任务互斥信息,将当前待处理任务与运行任务进行双向互斥比对,若运行任务中不存在当前待处理任务的互斥任务,通过线程池执行当前待处理任务,确保了存在互斥行为的互斥任务不同时运行,避免了死锁现象的发生,提高了系统安全性能;同时,相比于对设备资源进行加锁,避免了线程被长时间被占用,提高了线程利用率,进而提高了任务处理效率。
84.可选的,任务管理装置,还包括:
85.互斥标签设置模块,用于若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则为所述当前待处理任务设置互斥标签,并将所述当前待处理任务放回所述消息队列;
86.标签比对执行模块,用于响应于再次遍历到所述当前待处理任务,基于所述互斥标签将所述当前待处理任务,依次与互斥线程中的运行任务以及非互斥线程中的运行任务进行双向互斥比对。
87.可选的,互斥比对执行模块401,具体用于根据任务触发类型对各所述运行任务进行排序;其中,所述任务触发类型包括后台触发任务、定时触发任务和用户触发任务;根据排序结果,将所述当前待处理任务依次与各所述运行任务进行双向互斥比对。
88.可选的,任务管理装置,还包括:
89.新任务创建模块,用于响应于获取到任务请求,根据所述任务请求创建新任务;将所述新任务进行初始化,以通过配置文件获取所述新任务的任务互斥信息;将初始化完成的新任务放入所述消息队列。
90.可选的,任务管理装置,还包括:
91.预测完成耗时获取模块,用于若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则获取所述互斥任务的预测完成耗时;若所述消息队列的预测遍历时间与所述预测完成耗时的差值大于等于第一预设阈值,则将所述当前待处理任务发送至倒计时队列,并根据所述预测完成耗时为所述当前待处理任务设置倒计时器;响应于检测到所述倒计时器倒计时完成,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥
比对;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。
92.可选的,任务管理装置,还包括:
93.指定线程发送模块,用于若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第一指定互斥任务所在的第一线程中,以在所述第一线程中等待执行所述当前待处理任务;响应于检测到所述第一线程中的所述第一指定互斥任务处理完毕,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过所述第一线程执行所述当前待处理任务。
94.可选的,指定线程发送模块,还用于若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第二指定互斥任务所在的第二线程中,以在所述第二线程中等待执行所述当前待处理任务。
95.上述装置可执行本发明任意实施例所提供的任务管理方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的任务管理方法。
96.实施例五
97.图5示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
98.如图5所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
99.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
100.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如任务管理方法。
101.在一些实施例中,任务管理方法可被实现为计算机程序,其被有形地包含于计算
机可读存储介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由rom和/或通信单元而被载入和/或安装到异构硬件加速器上。当计算机程序加载到ram并由处理器执行时,可以执行上文描述的任务管理方法的一个或多个步骤。备选地,在其他实施例中,处理器可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行任务管理方法。
102.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
103.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
104.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
105.为了提供与用户的交互,可以在异构硬件加速器上实施此处描述的系统和技术,该异构硬件加速器具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给异构硬件加速器。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
106.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网
(lan)、广域网(wan)、区块链网络和互联网。
107.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
108.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
109.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术特征:


1.一种任务管理方法,其特征在于,包括:遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。2.根据权利要求1所述的方法,其特征在于,在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则为所述当前待处理任务设置互斥标签,并将所述当前待处理任务放回所述消息队列;响应于再次遍历到所述当前待处理任务,基于所述互斥标签将所述当前待处理任务,依次与互斥线程中的运行任务以及非互斥线程中的运行任务进行双向互斥比对。3.根据权利要求1所述的方法,其特征在于,所述根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对,具体包括:根据任务触发类型对各所述运行任务进行排序;其中,所述任务触发类型包括后台触发任务、定时触发任务和用户触发任务;根据排序结果,将所述当前待处理任务依次与各所述运行任务进行双向互斥比对。4.根据权利要求1所述的方法,其特征在于,所述任务管理方法还包括:响应于获取到任务请求,根据所述任务请求创建新任务;将所述新任务进行初始化,以通过配置文件获取所述新任务的任务互斥信息;将初始化完成的新任务放入所述消息队列。5.根据权利要求1所述的方法,其特征在于,在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,则获取所述互斥任务的预测完成耗时;若所述消息队列的预测遍历时间与所述预测完成耗时的差值大于等于第一预设阈值,则将所述当前待处理任务发送至倒计时队列,并根据所述预测完成耗时为所述当前待处理任务设置倒计时器;响应于检测到所述倒计时器倒计时完成,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。6.根据权利要求1所述的方法,其特征在于,在根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小
于等于第二预设阈值,则将所述当前待处理任务发送至第一指定互斥任务所在的第一线程中,以在所述第一线程中等待执行所述当前待处理任务;响应于检测到所述第一线程中的所述第一指定互斥任务处理完毕,将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对;若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过所述第一线程执行所述当前待处理任务。7.根据权利要求6所述的方法,其特征在于,在将所述当前待处理任务与所述至少一个运行任务再次进行双向互斥比对之后,还包括:若所述至少一个运行任务中存在所述当前待处理任务的互斥任务,且互斥任务数量小于等于第二预设阈值,则将所述当前待处理任务发送至第二指定互斥任务所在的第二线程中,以在所述第二线程中等待执行所述当前待处理任务。8.一种任务管理装置,其特征在于,包括:互斥比对执行模块,用于遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将所述当前待处理任务与所述至少一个运行任务进行双向互斥比对;其中,所述任务信息包括任务描述信息和任务互斥信息;任务处理执行模块,用于若所述至少一个运行任务中不存在所述当前待处理任务的互斥任务,则通过线程池执行所述当前待处理任务。9.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的任务管理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的任务管理方法。

技术总结


本发明公开了一种任务管理方法,该方法包括:遍历消息队列中的待处理任务,并根据当前待处理任务的任务信息以及至少一个运行任务的任务信息,将当前待处理任务与至少一个运行任务进行双向互斥比对;其中,任务信息包括任务描述信息和任务互斥信息;若至少一个运行任务中不存在当前待处理任务的互斥任务,则通过线程池执行当前待处理任务。本发明实施例的技术方案,确保了存在互斥行为的互斥任务不同时运行,避免了出现死锁问题,提高了系统安全性能;同时,避免了线程长时间被占用,提高了线程利用率,进而提高了任务处理效率。进而提高了任务处理效率。进而提高了任务处理效率。


技术研发人员:

王洪伟 崔旭阳 陈乃东 范竟成 甄雨

受保护的技术使用者:

曙光信息产业股份有限公司

技术研发日:

2022.09.16

技术公布日:

2022/12/9

本文发布于:2024-09-20 15:03:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/34888.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   互斥   线程   信息
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议