CN111813517B - 任务队列的分配方法、装置、计算机设备及介质 - Google Patents
任务队列的分配方法、装置、计算机设备及介质 Download PDFInfo
- Publication number
- CN111813517B CN111813517B CN202010610223.5A CN202010610223A CN111813517B CN 111813517 B CN111813517 B CN 111813517B CN 202010610223 A CN202010610223 A CN 202010610223A CN 111813517 B CN111813517 B CN 111813517B
- Authority
- CN
- China
- Prior art keywords
- task
- time
- pointer
- array
- thread monitoring
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种任务队列的分配方法、装置、计算机设备及存储介质,所述方法包括:对待处理的基础任务进行解析,得到每个基础任务的开始时间和结束时间,将开始时间和结束时间分别存入到两个数组中,并按时间顺序对数组进行排序,得到第一时序数组和第二时序数组,通过构建双指针分别对第一时序数组中的任务开始时间和第二时序数组的结束时间进行监控,并根据线程监控指针确定任务状态并进行更多线程监控指针的自增,进而将每个线程监控指针对应的基础任务存入一个任务队列。本发明还涉及区块链技术,将得到的每个任务队列存储到区块链网络中,本发明么有利于提高任务分配效率。
Description
技术领域
本发明涉及信息自动化领域,尤其涉及一种任务队列的分配方法、装置、计算机设备及介质。
背景技术
随着人工智能技术的发展,以及与各个行业的融合,通过RAP机器人进行自动化控制执行业务流程越来越普遍,RPA机器人可以解释、有序化,在应用程序界面上识别数据并像人类一样操纵应用程序,往往通过RAP机器人控制若干计算机(集群节点)执行众多的待处理任务,怎样合理的把各个待处理任务分配给不同的计算机(集群节点),以使资源利用效率更高,成为一个热门的话题。
针对这一类问题,现有技术使用了人工智能搜索方法和回朔方法的思想,并通过剪枝方法来进行任务分配优化。从理论上讲,通过该方式可以计算出资源利用效率最高的任务分配方案。但是,在任务数量较大时,采用搜索方法和回朔方法,会非常耗时较长时间,时间复杂度为指数阶O(2n),使得任务分配的效率较低,寻求一种高效率的应用与智能化机器人平台的任务分配方法,成了一个亟待解决的技术难题。
发明内容
本发明实施例提供一种任务队列的分配方法、装置、计算机设备和存储介质,以提高智能化机器人平台的任务分配效率。
为了解决上述技术问题,本申请实施例提供一种任务队列的分配方法,包括:
获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
将所述基础任务的开始时间存入到第一初始数组,将所述基础任务的结束时间存入到第二初始数组;
按照时间的先后顺序,对第一初始数组中的开始时间进行排序,得到第一时序数组,对第二初始数组中的结束时间进行排序,得到第二时序数组;
构建任务指向指针和线程监控指针,所述任务指向指针初始指向为所述第一时序数组的中的第一个开始时间,所述线程监控指针初始指向为所述第二时序数组的中的第一个结束时间;
采用所述任务指向指针遍历所述第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据所述线程监控指针指向第二时序数组中的结束时间,判断所述线程监控指针当前对应的任务状态;
若所述任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务;
在所述任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列,其中,N为正整数。
可选地,所述在遍历到每个开始时间时,根据所述线程监控指针指向第二时序数组中的结束时间,判断所述线程监控指针当前对应的任务状态包括:
将所述任务指向指针访问的所述第一时序数组中的元素,作为第一元素;
获取线程监控指针在第二时序数组中指向的元素,作为第二元素,得到至少一个所述第二元素;
将所述第一元素对应的时间点分别与每个第二元素对应时间点进行比较,得到比较结果;
若所述比较结果为存在至少一个第二元素对应的时间点小于或等于所述第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针;
若所述比较结果为每个所述第二元素对应的时间点均大于所述第一元素对应的时间点,则确定每个线程监控指针对应的任务状态均为正在执行。
可选地,在所述若所述比较结果为存在至少一个第二元素对应的时间点小于或等于所述第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针之后,所述任务队列的分配方法还包括:
从所述时间点小于或等于所述第一元素对应的时间点的第二元素中,随机选取一个元素,作为闲置元素;
将所述闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间。
可选地,在所述将所述闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间之后,还包括:
获取所述闲置元素在所述第二时序数组中的位置信息;
基于所述位置信息,对所述闲置元素进行删除处理,并更新所述第二时序数组。
可选地,其特征在于,所述第一初始数组中的开始时间排序和所述第二初始数组中的结束时间排序,采用插入排序法进行执行。
可选地,在所述将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列之后,还包括:将所述目标任务队列存储于区块链网络节点中。
为了解决上述技术问题,本申请实施例还提供一种任务队列的分配装置,包括:
数据获取模块,用于获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
数据存储模块,用于将所述基础任务的开始时间存入到第一初始数组,将所述基础任务的结束时间存入到第二初始数组;
数组排序模块,用于按照时间的先后顺序,对第一初始数组中的开始时间进行排序,得到第一时序数组,对第二初始数组中的结束时间进行排序,得到第二时序数组;
指针构建模块,用于构建任务指向指针和线程监控指针,所述任务指向指针初始指向为所述第一时序数组的中的第一个开始时间,所述线程监控指针初始指向为所述第二时序数组的中的第一个结束时间;
状态监控模块,用于采用所述任务指向指针遍历所述第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据所述线程监控指针指向第二时序数组中的结束时间,判断所述线程监控指针当前对应的任务状态;
线程自增模块,用于若所述任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务;
队列确定模块,用于在所述任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列,其中,N为正整数。
可选地,所述状态监控模块包括:
第一元素确定单元,用于将所述任务指向指针访问的所述第一时序数组中的元素,作为第一元素;
第二元素确定单元,用于获取线程监控指针在第二时序数组中指向的元素,作为第二元素,得到至少一个所述第二元素;
时间点比较单元,用于将所述第一元素对应的时间点分别与每个第二元素对应时间点进行比较,得到比较结果;
第一状态确定单元,用于若所述比较结果为存在至少一个第二元素对应的时间点小于或等于所述第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针;
第二状态确定单元,用于若所述比较结果为每个所述第二元素对应的时间点均大于所述第一元素对应的时间点,则确定每个线程监控指针对应的任务状态均为正在执行。
可选地,所述任务队列的分配装置还包括:
闲置元素确定模块,用于从所述时间点小于或等于所述第一元素对应的时间点的第二元素中,随机选取一个元素,作为闲置元素;
指针偏移模块,用于将所述闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间。
可选地,所述任务队列的分配装置还包括:
位置确定模块,用于获取所述闲置元素在所述第二时序数组中的位置信息;
数组更新模块,用于基于所述位置信息,对所述闲置元素进行删除处理,并更新所述第二时序数组。
可选地,所述任务队列的分配装置还包括:
存储模块,用于将所述目标任务队列存储于区块链网络节点中。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任务队列的分配方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任务队列的分配方法的步骤。
本发明实施例提供的任务队列的分配方法、装置、计算机设备及存储介质,通过对待处理的基础任务进行解析,得到每个基础任务的开始时间和结束时间,将开始时间存入到第一初始数组,将结束时间存入到第二初始数组,按照时间的先后顺序,分别对第一初始数组中的开始时间和第二初始数组中的结束时间进行排序,得到第一时序数组和第二时序数组,构建任务指向指针和线程监控指针,采用任务指向指针遍历第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据线程监控指针指向第二时序数组中的结束时间,判断线程监控指针当前对应的任务状态,若任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务,在任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列。本发明通过构建双指针分别对任务开始时间和结束时间进行监控,并根据线程监控指针确定任务状态并进行更多线程监控指针的自增,进而快速的确定每个基础任务所属的任务队列,提高了任务分配效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是本申请的任务队列的分配方法的一个实施例的流程图;
图3是根据本申请的任务队列的分配装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture E界面显示perts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureE界面显示perts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的任务队列的分配方法由服务器执行,相应地,任务队列的分配装置设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器,本申请实施例中的终端设备101、102、103具体可以对应的是实际生产中的应用系统。
请参阅图2,图2示出本发明实施例提供的一种任务队列的分配方法,该方法应用于智能化机器人平台的任务分配,以该方法应用在图1中的服务端为例进行说明,详述如下:
S201:获取每个待处理的基础任务,对基础任务进行解析,得到基础任务的开始时间和结束时间。
具体地,在接收到待处理的基础任务之后,通过对基础任务进行数据解析,得到每个基础任务的开始时间和结束时间。
需要说明的是,在本实施例中,开始时间和结束时间均为预先设置,为固定时间。
例如,在一具体实施方式中,得到5个待处理的基础任务,经过数据解析,得到其开始时间结束时间的元祖标识分别为:(1,20)、(15,25)、(8,28)、(2,15)和(21,50),其中,第一个数值为开始时间,第二个数值为结束时间,(1,20)表示任务开始时间为1,任务结束时间为20。
S202:将基础任务的开始时间存入到第一初始数组,将基础任务的结束时间存入到第二初始数组。
具体地,第一初始数组和第二初始数组可预先进行初始化,在得到开始时间和结束时间后,通过数组元素添加的方式,将基础任务的开始时间存入到第一初始数组,将基础任务的结束时间存入到第二初始数组。
S203:按照时间的先后顺序,对第一初始数组中的开始时间进行排序,得到第一时序数组,对第二初始数组中的结束时间进行排序,得到第二时序数组。
具体地,对基础任务的开始时间的先后顺序,得到任务序列,将该任务序列的数值存入到第一时序数组中,以使后续根据该第一数值中的时间任务进行任务分配,对基础任务的结束时间的先后顺序,并将排序后的结束时间存入到第二时序数组中,以使后续通过对第二数组中的结束时间进行跟踪,确定任务状态。
在本实施例中,在任务数量较多时,可采用排序算法对第一初始数组和第二初始数组中存储的时间进行排序,常用的排序算法包括但不限于:冒泡排序、选择排序、插入排序和计数排序等。
继续以步骤S10中的示例为例,按照任务开始时间进行排序后,得到的第一初始数组为{1,15,8,2,21},得到第二初始数组为{20,25,28,15,50},经过排序后,得到第一时序数组为{(1,2,8,15,21},得到第二时序数组为{15,20,25,28,50}。
优选地,第一初始数组中的开始时间排序和第二初始数组中的结束时间排序,采用插入排序法进行执行。
其中,插入排序(Insertion sort)法是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。
S204:构建任务指向指针和线程监控指针,任务指向指针初始指向为第一时序数组的中的第一个开始时间,线程监控指针初始指向为第二时序数组的中的第一个结束时间。
具体地,构建任务指向指针和线程监控指针,其中,任务指向指针用于在后续对每个基础任务在第一时序数组中的开始时间进行遍历,线程监控指针用于通过第二时序数组中的结束时间和待执行的基础任务的开始时间,实现对基础任务的当前状态进行跟踪,当前状态包括正在执行和执行完成。
其中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的高效且省资源。
S205:采用任务指向指针遍历第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据线程监控指针指向第二时序数组中的结束时间,判断线程监控指针当前对应的任务状态。
具体地,通过任务指向指针遍历第一时序数组的中的开始时间,并采用线程监控指针同步监控第二时序数组中的结束时间,判断当前指向第二时序数组中的结束时间,在遍历到的开始时间的时间点的任务状态,在任务状态为任务完成时,对新的结束时间进行监控。
需要说的是,线程监控指针根据跟踪任务的需要,进行自增,在判断任务状态时,若每个线程监控指针对应的任务状态均为正在执行,则确定最终状态为正在执行,否则,确定最终的任务状态为执行完成。
在遍历到每个开始时间时,根据线程监控指针指向第二时序数组中的结束时间,判断线程监控指针当前对应的任务状态,具体可参考后续实施例的描述,为避免重复,此处不再赘述。
S206:若任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务。
具体地,在每个线程监控指针的任务状态均为正在执行时,表明现有的线程监控指针无法实现对新的基础任务的监控,因而,需要开启新的线程监控指针来对新的基础任务的任务状态进行跟踪。
需要说明的是,通常进行任务分配,进行空闲流水线的搜索方法和回朔方法,时间复杂度是指数阶O(2n),在任务数量较多时,会消耗大量的时间,导致任务分配效率较低,而本实施例采用数组排序,并对任务状态进行跟踪,进而在需要时增加新的线程监控指针的方式,大大减少了数据运算量,提高了分配效率。
S207:在任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列,其中,N为正整数。
具体地,在任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并且,将每个现场监控指令执行的结束时间对应的基础任务,加入到同一个任务队列,得到N个任务队列,确保在后续在进行任务执行时,每个队列的任务时间不会冲突。
在本实施例中,通过对待处理的基础任务进行解析,得到每个基础任务的开始时间和结束时间,将开始时间存入到第一初始数组,将结束时间存入到第二初始数组,按照时间的先后顺序,分别对第一初始数组中的开始时间和第二初始数组中的结束时间进行排序,得到第一时序数组和第二时序数组,构建任务指向指针和线程监控指针,采用任务指向指针遍历第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据线程监控指针指向第二时序数组中的结束时间,判断线程监控指针当前对应的任务状态,若任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务,在任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列。本发明通过构建双指针分别对任务开始时间和结束时间进行监控,并根据线程监控指针确定任务状态并进行更多线程监控指针的自增,进而快速的确定每个基础任务所属的任务队列,提高了任务分配效率。
在一实施例中,在得到N个目标任务队列之后,将每个目标任务队列存储于区块链网络节点中,通过区块链存储,实现数据信息在不同平台之间的共享,也可防止数据被篡改。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
在本实施例的一些可选的实现方式中,步骤S205中,在遍历到每个开始时间时,根据线程监控指针指向第二时序数组中的结束时间,判断线程监控指针当前对应的任务状态包括:
将任务指向指针访问的第一时序数组中的元素,作为第一元素;
获取线程监控指针在第二时序数组中指向的元素,作为第二元素,得到至少一个第二元素;
将第一元素对应的时间点分别与每个第二元素对应时间点进行比较,得到比较结果;
若比较结果为存在至少一个第二元素对应的时间点小于或等于第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针;
若比较结果为每个第二元素对应的时间点均大于第一元素对应的时间点,则确定每个线程监控指针对应的任务状态均为正在执行。
具体地,将任务指向指针遍历到的第一数组中的元素,作为第一元素,将此时线程监控指针在第二时序数组中指向的元素,作为第二元素,由于线程监控指针为一个或多个,每个线程监控指针指向一个元素,因而,得到一个或多个第二元素,再将第一元素对应的时间点分别与每个第二元素对应的时间点进行大小比较,得到比较结果,在比较结果为存在至少一个第二元素对应的时间点小于或等于第一元素对应的时间点,确定存在对应的任务状态为执行完成的线程监控指针,在比较结果为每个第二元素对应的时间点均大于第一元素对应的时间点时,确定每个线程监控指针对应的任务状态均为正在执行。
在本实施例中,通过对线程监控指针指向的结束时间,和便利到的开始时间,确定线程监控指针指向的结束时间对应的任务状态,进而确定当前线程监控指针是否满足对当前时间点需要执行的基础任务的监控需要,根据判断结果按需对线程监控指针自增。
在本实施例的一些可选的实现方式中,在若比较结果为存在至少一个第二元素对应的时间点小于或等于第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针之后,该任务队列的分配方法还包括:
从时间点小于或等于第一元素对应的时间点的第二元素中,随机选取一个元素,作为闲置元素;
将闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间。
具体地,在比较结果为存在至少一个第二元素对应的时间点小于或等于第一元素对应的时间点时,说明存在线程监控指针指向的结束时间对应的基础任务,在当前时间点已经完成,此时,从时间点小于或等于第一元素对应的时间点的第二元素中,随机选取一个元素,作为闲置元素,并将该闲置元素对应的线程监控指针在数组对应的地址表中,向后移动,指向下一个位置的结束时间,以供下次进行判断。
需要说明的是,若下一个位置的结束时间的时间点,也小于或等于第一元素对应的时间点,则将该线程监控指针继续向后移动,以使该现场监控指针指向一个任务状态为正在执行的结束时间。
在本实施例中,通过对闲置元素对应的线程监控指针指向的变动,确保后续进行比较判断,不会对已经判断过的结束时间重复进行判断,减少计算量,有利于提高运算效率。
在本实施例的一些可选的实现方式中,在将闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间之后,该任务队列的分配方法还包括:
获取闲置元素在第二时序数组中的位置信息;
基于位置信息,对闲置元素进行删除处理,并更新第二时序数组。
具体地,获取闲置元素在第二时序数组中的位置信息,进而采用循环的方式,将该位置信息后面的每个元素的下标往前移动一个位置,并将整个数组中的元素数量减1,得到更新后的第二时序数组。
在本实施例中,通过对冗余的闲置元素的删除,减少第二时序数组的数据量,有利于提高后续数据处理的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图3示出与上述实施例任务队列的分配方法一一对应的任务队列的分配装置的原理框图。如图3所示,该任务队列的分配装置包括数据获取模块31、数据存储模块32、数组排序模块33、指针构建模块34、状态监控模块35、线程自增模块36和队列确定模块37。各功能模块详细说明如下:
数据获取模块31,用于获取每个待处理的基础任务,对基础任务进行解析,得到基础任务的开始时间和结束时间;
数据存储模块32,用于将基础任务的开始时间存入到第一初始数组,将基础任务的结束时间存入到第二初始数组;
数组排序模块33,用于按照时间的先后顺序,对第一初始数组中的开始时间进行排序,得到第一时序数组,对第二初始数组中的结束时间进行排序,得到第二时序数组;
指针构建模块34,用于构建任务指向指针和线程监控指针,任务指向指针初始指向为第一时序数组的中的第一个开始时间,线程监控指针初始指向为第二时序数组的中的第一个结束时间;
状态监控模块35,用于采用任务指向指针遍历第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据线程监控指针指向第二时序数组中的结束时间,判断线程监控指针当前对应的任务状态;
线程自增模块36,用于若任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务;
队列确定模块37,用于在任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列,其中,N为正整数。
可选地,状态监控模块35包括:
第一元素确定单元,用于将任务指向指针访问的第一时序数组中的元素,作为第一元素;
第二元素确定单元,用于获取线程监控指针在第二时序数组中指向的元素,作为第二元素,得到至少一个第二元素;
时间点比较单元,用于将第一元素对应的时间点分别与每个第二元素对应时间点进行比较,得到比较结果;
第一状态确定单元,用于若比较结果为存在至少一个第二元素对应的时间点小于或等于第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针;
第二状态确定单元,用于若比较结果为每个第二元素对应的时间点均大于第一元素对应的时间点,则确定每个线程监控指针对应的任务状态均为正在执行。
可选地,任务队列的分配装置还包括:
闲置元素确定模块,用于从时间点小于或等于第一元素对应的时间点的第二元素中,随机选取一个元素,作为闲置元素;
指针偏移模块,用于将闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间。
可选地,任务队列的分配装置还包括:
位置确定模块,用于获取闲置元素在第二时序数组中的位置信息;
数组更新模块,用于基于位置信息,对闲置元素进行删除处理,并更新第二时序数组。
可选地,任务队列的分配装置还包括:
存储模块,用于将目标任务队列存储于区块链网络节点中。
关于任务队列的分配装置的具体限定可以参见上文中对于任务队列的分配方法的限定,在此不再赘述。上述任务队列的分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件连接存储器41、处理器42、网络接口43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或D界面显示存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如电子文件的控制的程序代码等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的程序代码或者处理数据,例如运行电子文件的控制的程序代码。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有界面显示程序,所述界面显示程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的任务队列的分配方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种任务队列的分配方法,应用于智能化机器人平台的任务分配,其特征在于,所述任务队列的分配方法包括:
获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
将所述基础任务的开始时间存入到第一初始数组,将所述基础任务的结束时间存入到第二初始数组;
按照时间的先后顺序,对所述第一初始数组中的开始时间进行排序,得到第一时序数组,对所述第二初始数组中的结束时间进行排序,得到第二时序数组;
构建任务指向指针和线程监控指针,所述任务指向指针初始指向为所述第一时序数组的中的第一个开始时间,所述线程监控指针初始指向为所述第二时序数组的中的第一个结束时间;
采用所述任务指向指针遍历所述第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据所述线程监控指针指向所述第二时序数组中的结束时间,判断所述线程监控指针当前对应的任务状态;
若所述任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务;
在所述任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列,其中,N为正整数。
2.如权利要求1所述的任务队列的分配方法,其特征在于,所述在遍历到每个开始时间时,根据所述线程监控指针指向第二时序数组中的结束时间,判断所述线程监控指针当前对应的任务状态包括:
将所述任务指向指针访问的所述第一时序数组中的元素,作为第一元素;
获取线程监控指针在第二时序数组中指向的元素,作为第二元素,得到至少一个所述第二元素;
将所述第一元素对应的时间点分别与每个第二元素对应时间点进行比较,得到比较结果;
若所述比较结果为存在至少一个第二元素对应的时间点小于或等于所述第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针;
若所述比较结果为每个所述第二元素对应的时间点均大于所述第一元素对应的时间点,则确定每个线程监控指针对应的任务状态均为正在执行。
3.如权利要求2所述的任务队列的分配方法,其特征在于,在所述若所述比较结果为存在至少一个第二元素对应的时间点小于或等于所述第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针之后,所述任务队列的分配方法还包括:
从所述时间点小于或等于所述第一元素对应的时间点的第二元素中,随机选取一个元素,作为闲置元素;
将所述闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间。
4.如权利要求3所述的任务队列的分配方法,其特征在于,在所述将所述闲置元素对应的线程监控指针向后移动,指向下一个位置的结束时间之后,还包括:
获取所述闲置元素在所述第二时序数组中的位置信息;
基于所述位置信息,对所述闲置元素进行删除处理,并更新所述第二时序数组。
5.如权利要求1至4任一项所述的任务队列的分配方法,其特征在于,所述第一初始数组中的开始时间排序和所述第二初始数组中的结束时间排序,采用插入排序法进行执行。
6.如权利要求1所述的任务队列的分配方法,其特征在于,在所述将每个线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列之后,还包括:将所述目标任务队列存储于区块链网络节点中。
7.一种任务队列的分配装置,应用于智能化机器人平台的任务分配,其特征在于,所述任务队列的分配装置包括:
数据获取模块,用于获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
数据存储模块,用于将所述基础任务的开始时间存入到第一初始数组,将所述基础任务的结束时间存入到第二初始数组;
数组排序模块,用于按照时间的先后顺序,对所述第一初始数组中的开始时间进行排序,得到第一时序数组,对所述第二初始数组中的结束时间进行排序,得到第二时序数组;
指针构建模块,用于构建任务指向指针和线程监控指针,任务指向指针初始指向为所述第一时序数组的中的第一个开始时间,线程监控指针初始指向为所述第二时序数组的中的第一个结束时间;
状态监控模块,用于采用所述任务指向指针遍历第一时序数组的中的开始时间,并在遍历到每个开始时间时,根据所述线程监控指针指向所述第二时序数组中的结束时间,判断所述线程监控指针当前对应的任务状态;
线程自增模块,用于若所述任务状态为正在执行,则新增一个线程监控指针用于监控当前遍历到的开始时间对应的基础任务;
队列确定模块,用于在所述任务指向指针指向遍历完成后,统计所需的线程监控指针数量N,并将每个所述线程监控指针指向的结束时间对应的基础任务,加入到同一个任务队列,得到N个目标任务队列,其中,N为正整数。
8.如权利要求7所述的任务队列的分配装置,其特征在于,所述状态监控模块包括:
第一元素确定单元,用于将所述任务指向指针访问的所述第一时序数组中的元素,作为第一元素;
第二元素确定单元,用于获取所述线程监控指针在所述第二时序数组中指向的元素,作为第二元素,得到至少一个所述第二元素;
时间点比较单元,用于将所述第一元素对应的时间点分别与每个第二元素对应时间点进行比较,得到比较结果;
第一状态确定单元,用于若所述比较结果为存在至少一个第二元素对应的时间点小于或等于所述第一元素对应的时间点,则确定存在对应的任务状态为执行完成的线程监控指针;
第二状态确定单元,用于若所述比较结果为每个所述第二元素对应的时间点均大于所述第一元素对应的时间点,则确定每个所述线程监控指针对应的任务状态均为正在执行。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的任务队列的分配方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的任务队列的分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610223.5A CN111813517B (zh) | 2020-06-29 | 2020-06-29 | 任务队列的分配方法、装置、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610223.5A CN111813517B (zh) | 2020-06-29 | 2020-06-29 | 任务队列的分配方法、装置、计算机设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813517A CN111813517A (zh) | 2020-10-23 |
CN111813517B true CN111813517B (zh) | 2023-08-04 |
Family
ID=72856296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010610223.5A Active CN111813517B (zh) | 2020-06-29 | 2020-06-29 | 任务队列的分配方法、装置、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813517B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800824B (zh) * | 2020-12-08 | 2024-02-02 | 北京方正印捷数码技术有限公司 | 扫描文件的处理方法、装置、设备及存储介质 |
CN113176896B (zh) * | 2021-03-19 | 2022-12-13 | 中盈优创资讯科技有限公司 | 一种基于单进单出无锁队列的随机取出对象的方法 |
CN114358506B (zh) * | 2021-12-09 | 2022-09-30 | 广东精工智能系统有限公司 | 一种数智化转型服务平台任务分配方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
CN110764898A (zh) * | 2019-09-02 | 2020-02-07 | 平安科技(深圳)有限公司 | 一种任务分配方法、装置、可读存储介质及终端设备 |
CN110990141A (zh) * | 2019-12-12 | 2020-04-10 | 深圳前海环融联易信息科技服务有限公司 | 定时任务处理方法、装置、计算设备及存储介质 |
CN111324465A (zh) * | 2020-02-19 | 2020-06-23 | 深圳壹账通智能科技有限公司 | 多线程调用方法、装置、计算机系统及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477521B2 (en) * | 2014-05-29 | 2016-10-25 | Netapp, Inc. | Method and system for scheduling repetitive tasks in O(1) |
-
2020
- 2020-06-29 CN CN202010610223.5A patent/CN111813517B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
CN110764898A (zh) * | 2019-09-02 | 2020-02-07 | 平安科技(深圳)有限公司 | 一种任务分配方法、装置、可读存储介质及终端设备 |
CN110990141A (zh) * | 2019-12-12 | 2020-04-10 | 深圳前海环融联易信息科技服务有限公司 | 定时任务处理方法、装置、计算设备及存储介质 |
CN111324465A (zh) * | 2020-02-19 | 2020-06-23 | 深圳壹账通智能科技有限公司 | 多线程调用方法、装置、计算机系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111813517A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
CN111800462A (zh) | 微服务实例处理方法、装置、计算机设备及存储介质 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
CN111813515A (zh) | 基于多进程的任务调度方法、装置、计算机设备及介质 | |
CN112199442A (zh) | 分布式批量下载文件方法、装置、计算机设备及存储介质 | |
US8543722B2 (en) | Message passing with queues and channels | |
CN113010542B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN112363814A (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
CN111475468A (zh) | 新增系统的日志接入方法、装置、设备及存储介质 | |
CN111143568A (zh) | 一种论文分类时的缓冲方法、装置、设备及存储介质 | |
CN112002352B (zh) | 随机播放音乐方法、装置、计算机设备及存储介质 | |
CN114064403A (zh) | 一种任务延迟分析处理方法和装置 | |
US9172729B2 (en) | Managing message distribution in a networked environment | |
CN112667682A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115221360A (zh) | 树形结构配置方法和系统 | |
CN112148461A (zh) | 应用的调度方法、装置 | |
CN111767999A (zh) | 数据处理方法、装置及相关产品 | |
CN113254106B (zh) | 基于Flink的任务执行方法、装置、计算机设备及存储介质 | |
CN109582680A (zh) | 基于新产品开发的业务处理方法、电子装置及可读存储介质 | |
CN115795521B (zh) | 访问控制方法、装置、电子设备及存储介质 | |
CN114840692B (zh) | 图像库构建方法、图像检索方法、装置及相关设备 | |
CN114090585A (zh) | 批量数据处理方法、装置、计算机设备及存储介质 | |
CN117971378A (zh) | 工作流执行方法、装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |