CN116414581A - 基于线程池和Avl树的多线程时间同步事件调度系统 - Google Patents
基于线程池和Avl树的多线程时间同步事件调度系统 Download PDFInfo
- Publication number
- CN116414581A CN116414581A CN202310278271.2A CN202310278271A CN116414581A CN 116414581 A CN116414581 A CN 116414581A CN 202310278271 A CN202310278271 A CN 202310278271A CN 116414581 A CN116414581 A CN 116414581A
- Authority
- CN
- China
- Prior art keywords
- event
- queue
- executed
- task
- time
- 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.)
- Pending
Links
- 238000004806 packaging method and process Methods 0.000 claims abstract description 21
- 230000001360 synchronised effect Effects 0.000 claims abstract description 13
- 238000004088 simulation Methods 0.000 claims description 23
- 238000007726 management method Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 11
- 238000012163 sequencing technique Methods 0.000 claims description 10
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 238000004140 cleaning Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012821 model calculation Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种基于线程池和Avl树的多线程时间同步事件调度系统。所述系统包括:数据队列管理模块用于构建事件队列并根据Avl树对事件队列进行相关操作,得到顺序事件队列;事件调度模块用于根据事件调度器从时间同步模块中获取当前轮次的允许推进时间,对顺序事件队列进行维护和管理;多任务打包模块用于根据允许推进时间将待执行事件打包成待执行任务后发送给线程池;多任务调度模块用于根据计算机的计算资源将待执行任务交由空闲的工作线程执行;时间同步模块用于计算出各事件调度器的允许推进时间。采用本系统能够提高事件异步调度、时间同步推进和事件队列处理的速度。
Description
技术领域
本申请涉及仿真技术领域,特别是涉及一种基于线程池和Avl树的多线程时间同步事件调度系统系统、计算机设备和存储介质。
背景技术
在仿真业务中,仿真引擎驱动构造模型的高速解算和调度公共服务并行计算,在可用计算资源受约束的条件下,通过并行仿真算法创新,实现整体计算资源有效利用率和仿真运行效率的最大化。仿真引擎主要负责加载模型,驱动模型事件调度和模型解算,完成模型间交互收发,管理模型计算的时间推进。但在仿真业务中,存在着实体数量庞大,实体的事件、实体之间的交互产生频繁,同时事件并发性高的特点,这就对事件的调度和处理性能有了很高的要求。
然而,在仿真业务中,目前的事件调度系统,存在事件异步调度、时间同步推进和事件队列处理速度慢等问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高事件异步调度、时间同步推进和事件队列处理的速度的基于线程池和Avl树的多线程时间同步事件调度系统。
一种基于线程池和Avl树的多线程时间同步事件调度系统,所述系统包括:数据队列管理模块、事件调度模块、多任务打包模块、多任务调度模块和时间同步模块;
数据队列管理模块用于构建事件队列并根据Avl树对事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列;相关操作包括插入、删除、排序、取左值和取右值;
事件调度模块用于构建事件调度器;根据事件调度器从时间同步模块中获取当前轮次的允许推进时间,对顺序事件队列进行维护和管理;
多任务打包模块用于从顺序事件队列中取出待执行事件,根据允许推进时间将待执行事件打包成待执行任务后发送给线程池;
多任务调度模块用于对线程池进行初始化,得到多线程任务队列;将待执行任务放到多线程任务队列中,根据计算机的计算资源将待执行任务交由空闲的工作线程执行;
时间同步模块用于对事件调度器进行注册和反注册,根据注册和反注册后的事件调度器发送的时间推进请求进行统一汇总并计算出各事件调度器的允许推进时间,再返回给各事件调度器进行下一轮次的事件执行。
在其中一个实施例中,事件队列中包括多个待执行事件;数据队列管理模块还用于构建事件队列并根据Avl树对事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列,包括:
构建待执行事件的事件类;事件类包含事件的执行时间戳、上一个事件指针、下一个事件指针以及排序比较方法;
根据事件类和Avl树构建了节点数据类和队列数据类,将事件类按照执行时间戳顺序由小到大进行排序;节点数据类的元素为事件类的对象指针;队列数据类的元素为节点数据类的对象指针;
向队列数据类中插入元素时,根据执行时间戳排序将待执行事件插入到事件队列对应的位置中,时间不同的会按照先后顺序插入队列数据类中的不同节点,时间相同的会插入同一节点中并以next指针串联所有同一时间的待执行事件,得到按时间戳从小到大排列的顺序事件队列。
在其中一个实施例中,数据队列管理模块还用于从队列数据类中取出元素时,根据执行时间戳排序顺序从小到大,依次取出待执行事件的事件元素;每次取出头节点后,再依次取出下一待执行事件执行,直到队列数据类中元素为空;当待执行事件执行完成后,从队列数据类中删除对应事件元素,清理队列元素。
在其中一个实施例中,事件调度器包括输入事件队列和规划事件队列;不属于自身事件调度器产生的事件插入自身事件调度器输入事件队列中,自身调度器产生的事件插入规划事件队列中。
在其中一个实施例中,多任务打包模块用于将输入事件队列中执行时间在允许推进时间内的事件转存到规划事件队列中,再从规划事件队列中取出所有的待执行事件,打包成待执行任务后发送给线程池。
在其中一个实施例中,多线程任务队列包括待执行任务队列和工作线程队列;多任务调度模块还用于将待执行任务插入待执行任务队列中并按照插入先后顺序对待执行任务进行排序;工作线程队列中空闲的工作线程从待执行任务队列中按顺序取出待执行任务进行执行,将待执行任务执行完成后,释放计算资源,释放工作线程至工作线程队列中。
在其中一个实施例中,多任务调度模块还用于根据待执行任务的相关信息调用对应的仿真模型执行待执行任务;相关信息包括事件的发送方,事件的接收方,事件类型和事件的执行时间。
在其中一个实施例中,时间同步模块还用于在各事件调度器创建时进行调度器注册,在事件调度器销毁时进行调度器反注册,在仿真步长开始时,根据所有事件调度器发送的时间推进请求对各个事件调度器当前轮次的允许推进时间进行计算,计算完成后将允许推进时间发送给对应的事件调度器。
上述基于线程池和Avl树的多线程时间同步事件调度系统,首先在数据队列管理模块中构建事件队列并根据Avl树对事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列,基于Avl树对事件队列进行快速插入、删除、排序、取左值、取右值等相关操作,能够提供快速插入、快速取出的队列数据维护功能,维护一个按时间戳从小到大排列的事件队列,具有事件存储量大、存储排序速度快、事件取出速度快的高效的数据队列维护能力的优点,基于数据队列管理模块,构建了事件调度模块,事件调度模块用于构建事件调度器,在每个仿真步长的开始时,事件调度器向时间同步模块,发送时间推进的请求,时间同步模块收集完成每个事件调度器的请求后,进行时间计算,然后返回给各调度器允许推进的时间;根据允许推进时间,多任务打包模块将事件队列中待执行的任务打包,后交由线程池调度模块执行。基于线程池的多任务调度模块收到提交的任务后会先放入任务队列中,然后监测空闲线程分配资源,按顺序从任务队列中取出任务由空闲线程执行,通过同时为每个事件调度器分配允许推荐时间,根据允许推进时间进行事件打包然后交由线程池任务队列,线程池的多线程并发执行任务提高了多事件调度器并发的处理速度;本申请提高了事件的时间同步推进和事件队列的处理速度,每轮事件执行完成后,清理事件释放资源,充分利用计算机的计算资源,高效的实现多事件调度的并行计算。
附图说明
图1为一个实施例中基于线程池和Avl树的多线程时间同步事件调度系统的框架图;
图2为一个实施例中数据队列管理模块的示意图;
图3为一个实施例中事件调度模块的示意图;
图4为另一个实施例中多任务打包模块的示意图;
图5为一个实施例中多任务调度模块的示意图;
图6为一个实施例中时间同步模块的示意图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于线程池和Avl树的多线程时间同步事件调度系统,所述系统包括:数据队列管理模块、事件调度模块、多任务打包模块、多任务调度模块和时间同步模块;
数据队列管理模块用于构建事件队列并根据Avl树对事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列;相关操作包括插入、删除、排序、取左值和取右值;
事件调度模块用于构建事件调度器;根据事件调度器从时间同步模块中获取当前轮次的允许推进时间,对顺序事件队列进行维护和管理;
多任务打包模块用于从顺序事件队列中取出待执行事件,根据允许推进时间将待执行事件打包成待执行任务后发送给线程池;
多任务调度模块用于对线程池进行初始化,得到多线程任务队列;将待执行任务放到多线程任务队列中,根据计算机的计算资源将待执行任务交由空闲的工作线程执行;
时间同步模块用于对事件调度器进行注册和反注册,根据注册和反注册后的事件调度器发送的时间推进请求进行统一汇总并计算出各事件调度器的允许推进时间,再返回给各事件调度器进行下一轮次的事件执行。
上述基于线程池和Avl树的多线程时间同步事件调度系统中,首先在数据队列管理模块中构建事件队列并根据Avl树对事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列,基于Avl树对事件队列进行快速插入、删除、排序、取左值、取右值等相关操作,能够提供快速插入、快速取出的队列数据维护功能,维护一个按时间戳从小到大排列的事件队列,具有事件存储量大、存储排序速度快、事件取出速度快的高效的数据队列维护能力的优点,基于数据队列管理模块,构建了事件调度模块,事件调度模块用于构建事件调度器,在每个仿真步长的开始时,事件调度器向时间同步模块,发送时间推进的请求,时间同步模块收集完成每个事件调度器的请求后,进行时间计算,然后返回给各调度器允许推进的时间;根据允许推进时间,多任务打包模块将事件队列中待执行的任务打包,后交由线程池调度模块执行。基于线程池的多任务调度模块收到提交的任务后会先放入任务队列中,然后监测空闲线程分配资源,按顺序从任务队列中取出任务由空闲线程执行,通过同时为每个事件调度器分配允许推荐时间,根据允许推进时间进行事件打包然后交由线程池任务队列,线程池的多线程并发执行任务提高了多事件调度器并发的处理速度;本申请提高了事件的时间同步推进和事件队列的处理速度,每轮事件执行完成后,清理事件释放资源,充分利用计算机的计算资源,高效的实现多事件调度的并行计算。
在其中一个实施例中,事件队列中包括多个待执行事件;数据队列管理模块还用于构建事件队列并根据Avl树对事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列,包括:
构建待执行事件的事件类;事件类包含事件的执行时间戳、上一个事件指针、下一个事件指针以及排序比较方法;
根据事件类和Avl树构建了节点数据类和队列数据类,将事件类按照执行时间戳顺序由小到大进行排序;节点数据类的元素为事件类的对象指针;队列数据类的元素为节点数据类的对象指针;
向队列数据类中插入元素时,根据执行时间戳排序将待执行事件插入到事件队列对应的位置中,时间不同的会按照先后顺序插入队列数据类中的不同节点,时间相同的会插入同一节点中并以next指针串联所有同一时间的待执行事件,得到按时间戳从小到大排列的顺序事件队列。
在其中一个实施例中,数据队列管理模块还用于从队列数据类中取出元素时,根据执行时间戳排序顺序从小到大,依次取出待执行事件的事件元素;每次取出头节点后,再依次取出下一待执行事件执行,直到队列数据类中元素为空;当待执行事件执行完成后,从队列数据类中删除对应事件元素,清理队列元素。
在具体实施例中,首先定义了一个事件类,该事件类包含事件的执行时间戳、上一个事件指针、下一个事件指针、以及排序比较的方法;
基于定义的事件类和Avl树的特性,构建了节点数据类(AVLNode)和队列数据类(AVLTree),其中节点数据类的元素为事件类的对象指针,队列数据类的元素为节点数据类的对象指针并按照时间戳顺序由小到大进行排序;
向AVLTree中插入元素时,根据时间戳排序将事件对象插入到队列对应的位置中,时间不同的会按照先后顺序插入AVLTree中的不同节点,时间相同的会插入同一节点中并以next指针串联所有同一时间的事件;
从AVLTree中取出元素时,根据时间戳排序顺序从小到大,依次取出待执行的事件元素;每次取出节点head后,会再依次取出Next的事件执行直到为空;
事件执行完成后,从AVLTree中删除对应事件元素,清理队列元素。
如图2所示,基于Avl树的数据队列管理模块的工作流程如下:
构建模板类CAVLTree(队列数据)和CAVLNode(节点数据),以Event事件类为参数模板创建CAVLTree类实例;
调用CAVLTree<T>::Insert方法时,根据Event类的Compare方法比较时间戳,插入对应的队列位置中,并给Left、Right对象赋值;
调用CAVLTree<T>::GetFirstNodeInOrder方法时,从数据队列中取出起始位置的一列数据(时间戳最小的)返回;
调用CAVLTree<T>::Delete方法时,从数据队列中删除指定的一列数据;
删除CAVLTree类实例时,清空队列,释放资源。
在其中一个实施例中,事件调度器包括输入事件队列和规划事件队列;不属于自身事件调度器产生的事件插入自身事件调度器输入事件队列中,自身调度器产生的事件插入规划事件队列中。
在具体实施例中,基于数据队列管理模块,构建了事件调度模块,事件调度器中包含两个队列:输入事件队列和规划事件队列,其中由其他调度器产生的事件会先插入输入事件队列中,自身调度器产生的事件插入规划事件队列中;在每个仿真步长的开始时,各事件调度器会从时间同步模块获取到本轮的允许推进时间;根据允许推进时间,调用多任务打包模块打包执行任务;线程调度执行事件队列时,取出待执行事件的相关信息,根据事件的接收方确定对应的仿真执行模型执行待执行任务;相关信息包括事件的发送方,事件的接收方,事件类型,事件的执行时间和事件所携带的参数;本轮事件执行完成后,会再次向时间同步模块请求下一次的允许推进时间,再等待下一次的调度。
如图3所示,事件调度模块的工作流程如下:
301.在开始时,进行事件调度器的初始化,会创建两个数据队列:inputed_event_list(输入事件队列)和scheduled_event_list(规划事件队列),同时向时间同步模块注册;
302.仿真过程中,模型自身产生的事件,插入scheduled_event_list中;
303.仿真过程中,模型给其他模型发送的交互,插入目标模型的事件调度器的inputed_event_list中;
304.事件调度器向时间同步模块申请同步时间,即允许推进时间;
305.在每个仿真步长中调用开始时,调用多任务打包模块进行任务打包;
306.等待线程资源执行调度任务时,开始一个个的执行任务中的事件;
307.事件执行完成后,从scheduled_event_list中删除对应的已执行事件,释放资源;
308.本轮事件执行完成后,事件调度器向时间同步模块请求下一轮推进时间,然后等待下一轮的事件执行。
在其中一个实施例中,多任务打包模块用于将输入事件队列中执行时间在允许推进时间内的事件转存到规划事件队列中,再从规划事件队列中取出所有的待执行事件,打包成待执行任务后发送给线程池。
在具体实施例中,基于事件队列,构建了多任务打包模块;在每个仿真步长的开始时,根据允许推进时间,会先将输入事件队列中满足允许推进时间的事件转存至规划事件队列中;再从规划事件队列中取出所有的待执行事件,打包成待执行任务,提交至线程池的任务调度中。
如图4所示,多任务打包模块的工作流程如下:
401.在每个仿真步长中调用时,根据从时间同步模块获取的本轮的允许推进时间,将inputed_event_list中本轮要执行的事件插入scheduled_event_list中;
402.然后把inputed_event_list中的对应事件删除;
403.再从scheduled_event_list中取出本轮所有待处理的事件取出,打包成待执行任务;
404.将待执行任务交由线程池任务队列执行。
在其中一个实施例中,多线程任务队列包括待执行任务队列和工作线程队列;多任务调度模块还用于将待执行任务插入待执行任务队列中并按照插入先后顺序对待执行任务进行排序;工作线程队列中空闲的工作线程从待执行任务队列中按顺序取出待执行任务进行执行,将待执行任务执行完成后,释放计算资源,释放工作线程至工作线程队列中。
在具体实施例中,基于线程池构建的多任务调度模块,在前期进行线程池的初始化,线程池中维护存在有一个待执行任务队列和一个工作线程队列;事件调度模块提交要执行的任务时,该模块将任务插入待执行任务队列中,按照插入先后顺序排序;工作线程队列中空闲的工作线程,从待执行任务队列中按顺序取出待执行任务进行执行;将待执行任务执行完成后,释放计算资源,释放工作线程至工作线程队列中。
如图5所示,基于线程池的多任务调度模块的工作流程如下:
501.在开始时,进行线程池对象的初始化,线程池初始化任务队列和工作线程队列,等待任务提交;
502.由事件调度器提交待执行任务的请求,然后本调度模块将其放入任务队列中;
503.本调度模块监测空闲的工作线程,然后从任务队列中按顺序取出待执行任务,交由空闲的工作线程执行;
504.任务执行完成后返回,同时释放工作线程至线程队列中
在其中一个实施例中,多任务调度模块还用于根据待执行任务的相关信息调用对应的仿真模型执行待执行任务;相关信息包括事件的发送方,事件的接收方,事件类型和事件的执行时间。
在其中一个实施例中,时间同步模块还用于在各事件调度器创建时进行调度器注册,在事件调度器销毁时进行调度器反注册,在仿真步长开始时,根据所有事件调度器发送的时间推进请求对各个事件调度器当前轮次的允许推进时间进行计算,计算完成后将允许推进时间发送给对应的事件调度器。
在具体实施例中,构建了时间同步模块,在前期进行模块的初始化,包含步长、前瞻量等;在各事件调度器创建时,向时间同步模块进行调度器注册,在事件调度器销毁时向时间同步模块进行调度器反注册,时间同步模块会维护当前仿真系统中的全部事件调度器的推进时间;在仿真步长开始时,事件调度器向时间同步模块请求时间推进,时间同步模块接收请求信息后,将其加入本轮参与计算;在本轮所有事件调度器的时间推进请求收集齐后,就开始计算本轮各事件调度器的允许推进时间,计算完成后返回结果。
如图6所示,时间同步模块的工作流程如下:
601.在开始时进行SynCore(时间同步类)的初始化,然后等待事件调度器注册;
602.在事件调度器注册时,给该事件调度器分配唯一ID,同时SynCore中记录事件调度器的标识信息,总的调度器个数加1;
603.在每轮SynCore收到事件调度器的时间推进请求,保存请求时间的信息;
604.SynCore监测到本轮各调度器的请求均收集完成后,开始进行保守允许推进时间的计算;
605.本轮允许推进时间计算完成后,返回给事件调度器,进行下一轮的事件处理;
606.SynCore等待下一轮的事件推进请求,至303。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于线程池和Avl树的多线程时间同步事件调度系统。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例系统中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各系统的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种基于线程池和Avl树的多线程时间同步事件调度系统,其特征在于,所述系统包括:数据队列管理模块、事件调度模块、多任务打包模块、多任务调度模块和时间同步模块;
所述数据队列管理模块用于构建事件队列并根据Avl树对所述事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列;所述相关操作包括插入、删除、排序、取左值和取右值;
所述事件调度模块用于构建事件调度器;根据所述事件调度器从时间同步模块中获取当前轮次的允许推进时间,对所述顺序事件队列进行维护和管理;
所述多任务打包模块用于从所述顺序事件队列中取出待执行事件,根据所述允许推进时间将所述待执行事件打包成待执行任务后发送给线程池;
所述多任务调度模块用于对线程池进行初始化,得到多线程任务队列;将所述待执行任务放到多线程任务队列中,根据计算机的计算资源将待执行任务交由空闲的工作线程执行;
所述时间同步模块用于对所述事件调度器进行注册和反注册,根据注册和反注册后的事件调度器发送的时间推进请求进行统一汇总并计算出各事件调度器的允许推进时间,再返回给各事件调度器进行下一轮次的事件执行。
2.根据权利要求1所述的系统,其特征在于,所述事件队列中包括多个待执行事件;所述数据队列管理模块还用于构建事件队列并根据Avl树对所述事件队列进行相关操作,得到按时间戳从小到大排列的顺序事件队列,包括:
构建所述待执行事件的事件类;所述事件类包含事件的执行时间戳、上一个事件指针、下一个事件指针以及排序比较方法;
根据所述事件类和Avl树构建了节点数据类和队列数据类,将所述事件类按照执行时间戳顺序由小到大进行排序;所述节点数据类的元素为事件类的对象指针;所述队列数据类的元素为节点数据类的对象指针;
向所述队列数据类中插入元素时,根据执行时间戳排序将待执行事件插入到所述事件队列对应的位置中,时间不同的会按照先后顺序插入队列数据类中的不同节点,时间相同的会插入同一节点中并以next指针串联所有同一时间的待执行事件,得到按时间戳从小到大排列的顺序事件队列。
3.根据权利要求2所述的系统,其特征在于,所述数据队列管理模块还用于从所述队列数据类中取出元素时,根据执行时间戳排序顺序从小到大,依次取出待执行事件的事件元素;每次取出头节点后,再依次取出下一待执行事件执行,直到所述队列数据类中元素为空;当待执行事件执行完成后,从所述队列数据类中删除对应事件元素,清理队列元素。
4.根据权利要求1所述的系统,其特征在于,所述事件调度器包括输入事件队列和规划事件队列;不属于自身事件调度器产生的事件插入自身事件调度器输入事件队列中,自身调度器产生的事件插入规划事件队列中。
5.根据权利要求4所述的系统,其特征在于,所述多任务打包模块用于将输入事件队列中执行时间在所述允许推进时间内的事件转存到所述规划事件队列中,再从所述规划事件队列中取出所有的待执行事件,打包成待执行任务后发送给线程池。
6.根据权利要求1所述的系统,其特征在于,所述多线程任务队列包括待执行任务队列和工作线程队列;所述多任务调度模块还用于将所述待执行任务插入所述待执行任务队列中并按照插入先后顺序对待执行任务进行排序;所述工作线程队列中空闲的工作线程从所述待执行任务队列中按顺序取出待执行任务进行执行,将待执行任务执行完成后,释放计算资源,释放工作线程至所述工作线程队列中。
7.根据权利要求6所述的系统,其特征在于,所述多任务调度模块还用于根据待执行任务的相关信息调用对应的仿真模型执行所述待执行任务;所述相关信息包括事件的发送方,事件的接收方,事件类型和事件的执行时间。
8.根据权利要求1所述的系统,其特征在于,所述时间同步模块还用于在各事件调度器创建时进行调度器注册,在事件调度器销毁时进行调度器反注册,在仿真步长开始时,根据所有事件调度器发送的时间推进请求对各个事件调度器当前轮次的允许推进时间进行计算,计算完成后将所述允许推进时间发送给对应的事件调度器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310278271.2A CN116414581A (zh) | 2023-03-20 | 2023-03-20 | 基于线程池和Avl树的多线程时间同步事件调度系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310278271.2A CN116414581A (zh) | 2023-03-20 | 2023-03-20 | 基于线程池和Avl树的多线程时间同步事件调度系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414581A true CN116414581A (zh) | 2023-07-11 |
Family
ID=87048992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310278271.2A Pending CN116414581A (zh) | 2023-03-20 | 2023-03-20 | 基于线程池和Avl树的多线程时间同步事件调度系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414581A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234697A (zh) * | 2023-11-16 | 2023-12-15 | 中国人民解放军国防科技大学 | 一种保守时间同步并行事件调度计算架构和方法 |
-
2023
- 2023-03-20 CN CN202310278271.2A patent/CN116414581A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234697A (zh) * | 2023-11-16 | 2023-12-15 | 中国人民解放军国防科技大学 | 一种保守时间同步并行事件调度计算架构和方法 |
CN117234697B (zh) * | 2023-11-16 | 2024-02-06 | 中国人民解放军国防科技大学 | 一种保守时间同步并行事件调度计算架构和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6434590B1 (en) | Methods and apparatus for scheduling parallel processors | |
US10552213B2 (en) | Thread pool and task queuing method and system | |
CN101996098B (zh) | 管理消息队列 | |
CN109857535B (zh) | 面向Spark JDBC的任务优先级控制的实现方法及装置 | |
US20060206894A1 (en) | Method of scheduling jobs using database management system for real-time processing | |
US10866832B2 (en) | Workflow scheduling system, workflow scheduling method, and electronic apparatus | |
CN112286671A (zh) | 一种容器化批处理作业调度方法、装置和计算机设备 | |
US20060070072A1 (en) | Information processing apparatus, memory area management method, and computer program | |
CN116414581A (zh) | 基于线程池和Avl树的多线程时间同步事件调度系统 | |
US8484649B2 (en) | Amortizing costs of shared scans | |
Grunwald | A users guide to AWESIME: An object oriented parallel programming and simulation system | |
US12026518B2 (en) | Dynamic, low-latency, dependency-aware scheduling on SIMD-like devices for processing of recurring and non-recurring executions of time-series data | |
CN116893899A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN117234697B (zh) | 一种保守时间同步并行事件调度计算架构和方法 | |
Sai et al. | Producer-Consumer problem using Thread pool | |
CN111506407B (zh) | Pull模式与Push模式相结合的资源管理与作业调度方法、系统 | |
Dong et al. | An efficient utilization-based test for scheduling hard real-time sporadic dag task systems on multiprocessors | |
CN114756375A (zh) | Gpu资源调度方法、系统、电子设备和存储介质 | |
Busch et al. | Stable Scheduling in Transactional Memory | |
Raspopov et al. | Resource allocation algorithm modeling in queuing system based on quantization | |
CN110442434B (zh) | 一种任务调度方法、装置、存储介质和服务器 | |
US20240176666A1 (en) | Workspace processing method and device | |
CN114880101B (zh) | 一种ai处理器、电子部件及电子设备 | |
Ali et al. | Predictable GPU Sharing in Component-Based Real-Time Systems | |
CN111858002B (zh) | 一种基于异步io的并发处理方法、系统及装置 |
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 |