CN111026526A - 程序的定时器配置方法、装置、存储介质及终端设备 - Google Patents
程序的定时器配置方法、装置、存储介质及终端设备 Download PDFInfo
- Publication number
- CN111026526A CN111026526A CN201911102085.3A CN201911102085A CN111026526A CN 111026526 A CN111026526 A CN 111026526A CN 201911102085 A CN201911102085 A CN 201911102085A CN 111026526 A CN111026526 A CN 111026526A
- Authority
- CN
- China
- Prior art keywords
- node
- timer
- task
- trigger
- newly added
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000000737 periodic effect Effects 0.000 claims abstract description 27
- 125000004122 cyclic group Chemical group 0.000 claims description 62
- 230000001960 triggered effect Effects 0.000 claims description 30
- 230000002159 abnormal effect Effects 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 13
- 238000013461 design Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000002699 waste material Substances 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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及程序及定时器设计领域,具体涉及一种程序的定时器配置方法、装置、存储介质及终端,所述方法包括:初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;当接收到消息队列时,若所述消息队列为增加节点消息,提取消息队列中的新增节点的配置参数,获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;计算所述节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器链表。本申请能够提高程序运行效率。
Description
技术领域
本申请涉及程序及定时器设计领域,具体涉及一种程序的定时器配置方法、装置、存储介质及终端设备。
背景技术
随着嵌入式系统应用的不断的深化,嵌入式程序设计的模块化、高效性是程序设计不断追求的目标,在程序设计过程中,往往会使用看门狗定时器作为程序某个功能代码的触发条件,而目前大多数程序在设计时,往往对每个需要特定条件出发的功能代码分别启动一个看门狗定时器进行启动,或是在程序运行过程中对看门狗定时器的链表进行多次遍历后满足条件才启动某个功能代码,这样设计的程序会造成大量的内存空间被占用,同时多个定时器在程序运行过程中需要频繁地进行切换,频繁切换的定时器也造成了系统资源的浪费。
发明内容
为解决现有技术中无法高效、便捷地对程序的功能代码进行触发,提出以下技术方案:
第一方面,本申请提供了一种程序的定时器配置方法,包括:
初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;
当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;
计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
进一步的,所述根据所述触发时刻将所述新增节点添加至定时器循环触发链表之后,还包括:
控制定时器计时等待新增节点触发;
当所述新增节点触发时,执行所述新增节点的节点任务。
进一步的,所述执行所述新增节点的节点任务之后,所述若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除,包括:
若所述新增节点为非周期性触发节点,将所述新增节点在所述定时器循环触发链表删除,并发送释放节点的消息队列。
进一步的,所述发送释放节点的消息队列之后,还包括:
当接收到释放节点的消息队列时,提取节点的配置参数,根据所述配置参数获取所述节点的节点任务,注销执行任务中所述节点的节点任务。
进一步的,所述执行所述新增节点的节点任务之后,所述若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,包括:
若所述新增节点为周期性触发节点,判断所述新增节点是否为首次触发;
若是,对所述定时器循环触发链表进行遍历并对所述新增节点进行触发,触发完成后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表;
若否,确定所述定时器循环触发链表完成遍历并按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
进一步的,所述生成新的定时器循环触发链表之后,还包括:
获取各节点的触发周期;
当节点的触发周期出现异常,确定出现异常的目标节点;
根据所述目标节点确定所述目标节点对应的节点任务。
进一步的,所述生成新的定时器循环触发链表之后,还包括:
获取节点任务的运行状态;
当所述节点任务的运行状态出现异常,确定出现异常的目标节点任务;
根据所述目标节点任务确定对应的节点。
第二方面,本申请还提供了一种程序的定时器配置装置,包括:
初始化模块:用于初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;
任务配置模块:用于当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;
节点配置模块:用于计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
第三方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的程序的定时器配置方法。
第四方面,本申请还提供了一种终端设备,包括:
一个或多个处理器;
存储器;
一个或多个计算机程序;
其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行上述的程序的定时器配置方法。
本申请与现有技术相比,具有以下有益效果:
本申请提供了一种利用单个看门狗定时器实现对程序中多段功能代码进行触发的方法,通过初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务即程序中的特定功能代码,然后在接收到增加节点消息的消息队列时,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中,能够实时将需要触发的节点任务对应的执行函数添加到执行序列找中,使得程序运行更具动态性,并且,根据所述触发时刻将所述新增节点添加至定时器循环触发链表,若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,进行节点的操作和程序执行任务的操作互不影响,即节点操作与定时器触发能够有效分离,使得两者能够并发运行,仅仅在进行节点操作时才对链表进行遍历并在新增节点完成首次触发后,形成新的按顺序排列的链表,从而降低链表的遍历次数以节省大量的系统资源。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请程序的定时器配置方法的一流程实施例示意图;
图2为本申请添加节点C并将节点C添加到定时器循环中的操作的一实施例示意图;
图3为本申请程序的定时器配置装置的一实施例示意图;
图4为本申请终端设备的一结构实施例示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本申请实施例提供一种程序的定时器配置方法,如图1所示,所述方法包括如下步骤:
S10:初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务。
本实施例中,创建单个看门狗定时器作为程序的功能代码的触发条件,完成程序中不同任务的触发运行,在程序运行前,需要初始化定时器,对定时器的数据变量初始化,包括设置定时器模式、设置定时器初值及启动定时器,同时,初始化定时器还包括维护一个全局的链表,本实施例将该全局的链表定义为定时器循环触发链表,然后根据初始化的定时器创建定时器服务任务,同时程序的执行任务亦进行初始化,以根据定时器服务任务激活程序的执行任务并执行相应的任务函数。
S20:当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中。
本实施例中,在程序的运行过程中,若触发了定时器循环触发链表中的节点,则激活程序相应的执行任务并执行相应的任务函数;若没有任务请求,即没有执行任务需要执行时,程序则处于阻塞状态,并在所述阻塞状态等待消息队列或任务触发执行,当接收到消息队列时,所述消息队列包括创建节点或释放节点的消息队列,若所述消息队列为增加节点消息,此时提取所述消息队列中的节点的配置参数,本实施例介绍的消息队列为增加节点消息,此时消息队列中包括了新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,然后将所述节点任务添加至执行任务中,在一种实施方式中,将所述新增节点的配置参数加载到事件列表中,获得信号量并返回参数到上层调用中,使得事件列表添加该新增节点对应的执行任务,将需要触发的函数添加到执行序列,以在后续对激活并执行所述新增节点对应的执行任务,执行对应的函数。
S30:计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
在将所述新增节点对应的节点任务添加至执行任务中后,还需要为该新增节点的节点任务配置相应的触发条件,即在定时器中为该新增节点的节点任务配置相应的触发节点,本实施例中,计算所述新增节点的节点任务的触发时刻,然后根据所述触发时刻将所述新增节点添加至定时器循环触发链表,在一种实施方式中,通过轮询计算节点最小触发时间计算所述新增节点的节点任务的触发时刻,搜寻到该触发时刻后将该节点添加到定时器循环触发链表中,形成新的定时器循环触发链表;进一步的,在将新增节点添加到定时器循环触发链表后,需要判断所述新增节点的节点类型,若所述新增节点为非周期性触发节点,则将所述新增节点在完成触发后删除,即所述新增节点并非周期性触发节点,只需要在特定的时刻触发后使程序执行相应的执行任务后便可删除,后续程序不再重复执行所述新增节点对应的执行任务;若所述新增节点为周期性触发节点,则需要对所述定时器循环触发链表进行遍历,并在遍历后完成首次触发的条件下,将所述新增节点按照预设顺序添加进所述定时器循环触发链表中,从而生成新的定时器循环触发链表,进行节点的操作和程序执行任务的操作互不影响,即节点操作与定时器触发能够有效分离,使得两者能够并发运行,仅仅在进行节点操作时才对链表进行遍历并在新增节点完成首次触发后,形成新的按顺序排列的链表,从而降低链表的遍历次数以节省大量的系统资源。
本实施例提供了一种利用单个看门狗定时器实现对程序中多段功能代码进行触发的方法,通过初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务即程序中的特定功能代码,然后在接收到增加节点消息的消息队列时,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中,能够实时将需要触发的节点任务对应的执行函数添加到执行序列找中,使得程序运行更具动态性,并且,根据所述触发时刻将所述新增节点添加至定时器循环触发链表,若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,进行节点的操作和程序执行任务的操作互不影响,即节点操作与定时器触发能够有效分离,使得两者能够并发运行,仅仅在进行节点操作时才对链表进行遍历并在新增节点完成首次触发后,形成新的按顺序排列的链表,从而降低链表的遍历次数以节省大量的系统资源。
本申请的一种实施例,所述根据所述触发时刻将所述新增节点添加至定时器循环触发链表之后,还包括:
控制定时器计时等待新增节点触发;
当所述新增节点触发时,执行所述新增节点的节点任务。
本实施例中,在将新增节点添加至定时器链表中后,控制定时器计时,等待新增节点触发,在一种实施方式中,在控制定时器计时前,定时器已经开始计时,此时只需要仍然保持定时器的计时状态,然后等待新增节点触发;在另一种实施方式中,在控制定时器计时前,定时器仍未计时,此时启动定时器开始计时,然后等待新增节点触发;当所述新增节点触发时,执行所述新增节点对应的节点任务,从而有效地将对节点操作与定时器所触发的操作进行分离,使得节点操作与任务执行能够同步运行,从而提高运行效率。
本申请的一种实施例,所述执行所述新增节点的节点任务之后,所述若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除,包括:
若所述新增节点为非周期性触发节点,将所述新增节点在触发完成后在所述定时器循环触发链表删除,保留原定时器循环触发链表,并发送释放节点的消息队列。
本实施例中,执行所述新增节点的节点任务之后,判断所述新增节点是否为周期性触发节点,若所述新增节点为非周期性触发节点,则该新增节点对应的任务在执行了单次后不再重复执行,此时,将所述新增节点在触发完成后在所述定时器循环触发链表删除,保留原定时器循环触发链表,使得定时器循环触发链表没有相应的节点,则不会触发执行相应的节点任务,从而保证程序能够正确运行,进一步的,在将所述新增节点在所述定时器循环触发链表删除后,还发送释放节点的消息队列,通过释放节点的消息队列控制程序对非周期性触发节点作进一步操作,有效地将对节点操作与定时器所触发的操作进行分离,使得节点操作与任务执行能够同步运行,从而提高运行效率。
本申请的一种实施例,所述发送释放节点的消息队列之后,还包括:
当接收到释放节点的消息队列时,提取节点的配置参数,根据所述配置参数获取所述节点的节点任务,注销执行任务中所述节点的节点任务。
本实施例中,在发送了释放节点的消息队列后,当程序接收到释放节点的消息队列时,提取消息队列中节点的配置参数,然后根据所述配置参数即可获取所述节点对应的节点任务,或者从之前获取的该节点的配置参数中提取该节点的节点任务,然后释放信号量返回参数到上层调用中,以将该节点对应的节点任务从事件列表删除,在一种实施方式中,在执行任务中注销所述节点对应的节点任务,避免后续错误地运行该节点对应的执行任务而造成的系统资源的浪费,从而提高系统资源的利用率,使用系统提供的信号量实现执行任务的灵活配置,使得程序运行流程具有可控性。
本申请的一种实施例,所述执行所述新增节点的节点任务之后,所述若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,包括:
若所述新增节点为周期性触发节点,判断所述新增节点是否为首次触发;
若是,对所述定时器循环触发链表进行遍历并对所述新增节点进行触发,触发完成后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表;
若否,确定所述定时器循环触发链表完成遍历并按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
本实施例中,执行所述新增节点的节点任务之后,判断所述新增节点是否为周期性触发节点,若所述新增节点为周期性触发节点,则再次判断所述新增节点是否为首次触发,即所述新增节点是否为第一次触发以执行相应的节点任务,当所述新增节点为首次触发时,则需要对定时器循环触发链表进行遍历,执行一遍定时器循环触发链表中各节点对应的节点任务或只对所述新增节点进行触发,然后在所述新增节点触发完成后按照预设顺序对所述新增节点进行排列,将所述新增节点添加与定时器循环触发链表中原有的周期性触发节点进行排序,从而生成新的定时器循环触发链表;若所述新增节点并非首次触发,则确定所述定时器循环触发链表以及完成遍历,然后直接按照预设顺序对所述新增节点进行排列,从而生成新的定时器循环触发链表,对于非首次触发的新增节点不再需要对定时器循环触发链表再次遍历,大大降低遍历次数并节省大量的系统资源。
本申请的一种实施例,所述生成新的定时器循环触发链表之后,还包括:
获取各节点的触发周期;
当节点的触发周期出现异常,确定出现异常的目标节点;
根据所述目标节点确定所述目标节点对应的节点任务。
本实施例中,在生成定时器循环触发链表,根据所述定时器循环触发链表便可获取各节点的触发周期,例如节点A的触发周期为0.05s,节点B的触发周期为0.30s,节点C的触发周期为0.50s,然后实时记录各节点的实际运行触发周期,当节点的实际运行触发周期出现异常时,确定出现异常的节点,将出现异常的节点定义为目标节点,从而根据目标节点确定所述目标节点对应的节点任务,检测目标节点对应的节点任务的执行是否出现异常,从而能够对出现异常的节点和/或任务进行维护,使得程序模块化更强,程序结构更加清晰,便于程序的维护,从而提高程序维护的效率。
本申请的一种实施例,所述生成新的定时器循环触发链表之后,还包括:
获取节点任务的运行状态;
当所述节点任务的运行状态出现异常,确定出现异常的目标节点任务;
根据所述目标节点任务确定对应的节点。
本实施例中,在生成定时器循环触发链表后,根据定时器循环触发链表计时、触发相应的节点,从而执行节点对应的任务,并且实时监测节点任务的运行状态,当所述节点任务的运行状态出现异常,例如节点任务陷入死循环,节点任务的执行效率过低导致与节点触发相抵触,此时确定出现异常的节点任务,将出现异常的节点任务定义为目标节点任务,然后根据所述目标节点任务便能确定对应的节点,从而方便检测节点的触发是否出现异常,能够快速地发现出现异常的节点和/或任务,并对出现异常的节点和/或任务进行维护,使得程序模块化更强,程序结构更加清晰,便于程序的维护,从而提高程序维护的效率。
如图2所示是添加节点C并将其添加到定时器循环中的操作的一实施例示意图,假设程序的定时器触发节点中本来存在周期性触发节点A、B,即定时器循环触发链表包含有节点A、B,此时添加新的节点C到定时器中,首先将节点C通过链表操作将其添加到链表中,然后对于节点C的节点类型进行判别,确定节点C为周期性触发节点,此时若节点C并非首次触发,则将节点C按照预设顺序添加到定时器循环触发链表中,从而生成新的定时器循环触发链表,对该链表中的节点不需再次遍历并依次完成触发,减少系统资源的消耗。
如图3所示,在另一种实施例中,本申请提供了一种程序的定时器配置装置,包括:
初始化模块10:用于初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;
任务配置模块20:用于当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;
节点配置模块30:用于计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
本申请的一种实施例,所述节点配置模块30还包括执行:
控制定时器计时等待新增节点触发;
当所述新增节点触发时,所述任务配置模块20执行所述新增节点的节点任务。
本申请的一种实施例,所述节点配置模块30还包括执行:
若所述新增节点为非周期性触发节点,将所述新增节点在所述定时器循环触发链表删除,并发送释放节点的消息队列。
本申请的一种实施例,所述任务配置模块20还包括执行:
当接收到释放节点的消息队列时,提取节点的配置参数,根据所述配置参数获取所述节点的节点任务,注销执行任务中所述节点的节点任务。
本申请的一种实施例,所述节点配置模块30还包括执行:
若所述新增节点为周期性触发节点,判断所述新增节点是否为首次触发;
若是,对所述定时器循环触发链表进行遍历并对所述新增节点进行触发,触发完成后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表;
若否,确定所述定时器循环触发链表完成遍历并按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
本申请的一种实施例,所述装置还包括:
第一检测模块:用于获取各节点的触发周期;当节点的触发周期出现异常,确定出现异常的目标节点;根据所述目标节点确定所述目标节点对应的节点任务。
本申请的一种实施例,所述装置还包括:
第二检测模块:用于获取节点任务的运行状态;当所述节点任务的运行状态出现异常,确定出现异常的目标节点任务;根据所述目标节点任务确定对应的节点
在另一种实施例中,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例所述的程序的定时器配置方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSSMemory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
本申请实施例提供的一种计算机可读存储介质,可实现初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。通过提供一种利用单个看门狗定时器实现对程序中多段功能代码进行触发的方法,通过初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务即程序中的特定功能代码,然后在接收到增加节点消息的消息队列时,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中,能够实时将需要触发的节点任务对应的执行函数添加到执行序列找中,使得程序运行更具动态性,并且,根据所述触发时刻将所述新增节点添加至定时器循环触发链表,若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,进行节点的操作和程序执行任务的操作互不影响,即节点操作与定时器触发能够有效分离,使得两者能够并发运行,仅仅在进行节点操作时才对链表进行遍历并在新增节点完成首次触发后,形成新的按顺序排列的链表,从而降低链表的遍历次数以节省大量的系统资源。
本申请实施例提供的计算机可读存储介质可以实现上述程序的定时器配置方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
此外,在又一种实施例中,本申请还提供一种终端设备,如图4所示,所述终端设备包括处理器403、存储器405、输入单元407以及显示单元409等器件。本领域技术人员可以理解,图4示出的结构器件并不构成对所有终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。所述存储器405可用于存储计算机程序401以及各功能模块,所述处理器403运行存储在存储器405的计算机程序401,从而执行设备的各种功能应用以及数据处理。所述存储器405可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。
输入单元407用于接收信号的输入及接收用户的输入,输入单元407可包括触控面板以及其它输入设备,触控面板可收集用户在其上或附近的触摸操作,并根据预先设定的程序驱动相应的连接装置。显示单元409可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元409可采用液晶显示器、有机发光二极管等形式。处理器403是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器403内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
在一种实施方式中,所述终端设备包括一个或多个处理器403,以及一个或多个存储器405,一个或多个计算机程序401,其中所述一个或多个计算机程序401被存储在存储器405中并被配置为由所述一个或多个处理器403执行,所述一个或多个计算机程序401配置用于执行以上实施例所述的程序的定时器配置方法。图4中所示的一个或多个处理器403能够执行、实现图3中所示的初始化模块10、任务配置模块20、节点配置模块30的功能。
本申请实施例提供的一种终端设备,可实现初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。通过提供一种利用单个看门狗定时器实现对程序中多段功能代码进行触发的方法,通过初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务即程序中的特定功能代码,然后在接收到增加节点消息的消息队列时,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中,能够实时将需要触发的节点任务对应的执行函数添加到执行序列找中,使得程序运行更具动态性,并且,根据所述触发时刻将所述新增节点添加至定时器循环触发链表,若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,进行节点的操作和程序执行任务的操作互不影响,即节点操作与定时器触发能够有效分离,使得两者能够并发运行,仅仅在进行节点操作时才对链表进行遍历并在新增节点完成首次触发后,形成新的按顺序排列的链表,从而降低链表的遍历次数以节省大量的系统资源。
本申请实施例提供的终端设备可以实现上述提供的程序的定时器配置方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种程序的定时器配置方法,其特征在于,包括:
初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;
当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;
计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述触发时刻将所述新增节点添加至定时器循环触发链表之后,还包括:
控制定时器计时等待新增节点触发;
当所述新增节点触发时,执行所述新增节点的节点任务。
3.根据权利要求2所述的方法,其特征在于,所述执行所述新增节点的节点任务之后,所述若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除,包括:
若所述新增节点为非周期性触发节点,将所述新增节点在触发完成后在所述定时器循环触发链表删除,保留原定时器循环触发链表,并发送释放节点的消息队列。
4.根据权利要求3所述的方法,其特征在于,所述发送释放节点的消息队列之后,还包括:
当接收到释放节点的消息队列时,提取节点的配置参数,根据所述配置参数获取所述节点的节点任务,注销执行任务中所述节点的节点任务。
5.根据权利要求2所述的方法,其特征在于,所述执行所述新增节点的节点任务之后,所述若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表,包括:
若所述新增节点为周期性触发节点,判断所述新增节点是否为首次触发;
若是,对所述定时器循环触发链表进行遍历并对所述新增节点进行触发,触发完成后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表;
若否,确定所述定时器循环触发链表完成遍历并按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
6.根据权利要求1所述的方法,其特征在于,所述生成新的定时器循环触发链表之后,还包括:
获取各节点的触发周期;
当节点的触发周期出现异常,确定出现异常的目标节点;
根据所述目标节点确定所述目标节点对应的节点任务。
7.根据权利要求1所述的方法,其特征在于,所述生成新的定时器循环触发链表之后,还包括:
获取节点任务的运行状态;
当所述节点任务的运行状态出现异常,确定出现异常的目标节点任务;
根据所述目标节点任务确定对应的节点。
8.一种程序的定时器配置装置,其特征在于,包括:
初始化模块:用于初始化定时器,根据初始化的定时器创建定时器服务任务以触发执行任务;
任务配置模块:用于当接收到消息队列时,若所述消息队列为增加节点消息,提取所述消息队列中的新增节点的配置参数,根据所述配置参数获取所述新增节点的节点任务,将所述节点任务添加至执行任务中;
节点配置模块:用于计算所述新增节点的节点任务的触发时刻,根据所述触发时刻将所述新增节点添加至定时器循环触发链表;若所述新增节点为非周期性触发节点,将所述新增节点在完成触发后删除;若所述新增节点为周期性触发节点,对所述定时器循环触发链表进行遍历后按照预设顺序对所述新增节点进行排列,生成新的定时器循环触发链表。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任意一项所述的程序的定时器配置方法。
10.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个计算机程序;
其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行根据权利要求1至7任意一项所述的程序的定时器配置方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911102085.3A CN111026526B (zh) | 2019-11-12 | 2019-11-12 | 程序的定时器配置方法、装置、存储介质及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911102085.3A CN111026526B (zh) | 2019-11-12 | 2019-11-12 | 程序的定时器配置方法、装置、存储介质及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026526A true CN111026526A (zh) | 2020-04-17 |
CN111026526B CN111026526B (zh) | 2024-01-30 |
Family
ID=70201332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911102085.3A Active CN111026526B (zh) | 2019-11-12 | 2019-11-12 | 程序的定时器配置方法、装置、存储介质及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026526B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113919878A (zh) * | 2021-10-16 | 2022-01-11 | 云南白药集团医药电子商务有限公司 | 可全流程配置的自动化营销方法及装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230945A1 (en) * | 2003-05-15 | 2004-11-18 | Bryant Deborah E. | Integration of a configuration tool with a graphical program language |
US20080045255A1 (en) * | 2006-08-21 | 2008-02-21 | Motorola, Inc. | Method of transmitting scheduling information by a wireless communication device and a wireless communication device |
CN101510163A (zh) * | 2009-04-07 | 2009-08-19 | 金蝶软件(中国)有限公司 | 一种计划任务的处理方法及系统 |
CN102761541A (zh) * | 2012-05-31 | 2012-10-31 | 汉柏科技有限公司 | 定时器处理方法及系统 |
CN104268015A (zh) * | 2014-09-05 | 2015-01-07 | 烽火通信科技股份有限公司 | 嵌入式设备高可用性定时器的实现方法及定时器 |
CN104503845A (zh) * | 2015-01-14 | 2015-04-08 | 北京邮电大学 | 一种任务分发方法和系统 |
CN105068865A (zh) * | 2015-07-28 | 2015-11-18 | 新华瑞德(北京)网络科技有限公司 | 任务调度方法和装置 |
CN107102892A (zh) * | 2017-03-28 | 2017-08-29 | 北京华云网际科技有限公司 | 定时器的处理方法和装置 |
WO2017166713A1 (zh) * | 2016-03-30 | 2017-10-05 | 乐视控股(北京)有限公司 | 服务请求处理方法及装置 |
US20180217776A1 (en) * | 2017-01-31 | 2018-08-02 | International Business Machines Corporation | Multi-tier data synchronizer based on concurrent linked list |
CN109634728A (zh) * | 2018-11-16 | 2019-04-16 | 深圳市云智融科技有限公司 | 作业调度方法、装置、终端设备及可读存储介质 |
CN110032438A (zh) * | 2019-04-24 | 2019-07-19 | 北京高途云集教育科技有限公司 | 延时任务执行方法、装置及电子设备 |
CN110231995A (zh) * | 2019-05-20 | 2019-09-13 | 平安科技(深圳)有限公司 | 一种基于Actor模型的任务调度方法、装置及存储介质 |
-
2019
- 2019-11-12 CN CN201911102085.3A patent/CN111026526B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230945A1 (en) * | 2003-05-15 | 2004-11-18 | Bryant Deborah E. | Integration of a configuration tool with a graphical program language |
US20080045255A1 (en) * | 2006-08-21 | 2008-02-21 | Motorola, Inc. | Method of transmitting scheduling information by a wireless communication device and a wireless communication device |
CN101510163A (zh) * | 2009-04-07 | 2009-08-19 | 金蝶软件(中国)有限公司 | 一种计划任务的处理方法及系统 |
CN102761541A (zh) * | 2012-05-31 | 2012-10-31 | 汉柏科技有限公司 | 定时器处理方法及系统 |
CN104268015A (zh) * | 2014-09-05 | 2015-01-07 | 烽火通信科技股份有限公司 | 嵌入式设备高可用性定时器的实现方法及定时器 |
CN104503845A (zh) * | 2015-01-14 | 2015-04-08 | 北京邮电大学 | 一种任务分发方法和系统 |
CN105068865A (zh) * | 2015-07-28 | 2015-11-18 | 新华瑞德(北京)网络科技有限公司 | 任务调度方法和装置 |
WO2017166713A1 (zh) * | 2016-03-30 | 2017-10-05 | 乐视控股(北京)有限公司 | 服务请求处理方法及装置 |
US20180217776A1 (en) * | 2017-01-31 | 2018-08-02 | International Business Machines Corporation | Multi-tier data synchronizer based on concurrent linked list |
CN107102892A (zh) * | 2017-03-28 | 2017-08-29 | 北京华云网际科技有限公司 | 定时器的处理方法和装置 |
CN109634728A (zh) * | 2018-11-16 | 2019-04-16 | 深圳市云智融科技有限公司 | 作业调度方法、装置、终端设备及可读存储介质 |
CN110032438A (zh) * | 2019-04-24 | 2019-07-19 | 北京高途云集教育科技有限公司 | 延时任务执行方法、装置及电子设备 |
CN110231995A (zh) * | 2019-05-20 | 2019-09-13 | 平安科技(深圳)有限公司 | 一种基于Actor模型的任务调度方法、装置及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113919878A (zh) * | 2021-10-16 | 2022-01-11 | 云南白药集团医药电子商务有限公司 | 可全流程配置的自动化营销方法及装置 |
CN113919878B (zh) * | 2021-10-16 | 2024-05-28 | 云南白药集团医药电子商务有限公司 | 可全流程配置的自动化营销方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111026526B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11659020B2 (en) | Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities | |
US6983461B2 (en) | Method and system for deadlock detection and avoidance | |
CN102804134B (zh) | 处理异常事件的装置和方法 | |
CN103827882A (zh) | 用于虚拟分区监视的系统和方法 | |
CN102999343A (zh) | 禁止启动项目自启动的方法和装置 | |
CN102999387A (zh) | 进程运行装置及方法 | |
CN111414256A (zh) | 基于麒麟移动操作系统的应用程序进程派生方法、系统及介质 | |
CN105359101A (zh) | 用于多核处理器的系统管理中断处理 | |
JP2022522474A (ja) | 組み込みソフトウェアアプリケーションのための機械学習ベースの異常検出 | |
CN103019706A (zh) | 针对启动项目的处理方法和装置 | |
CN111026526B (zh) | 程序的定时器配置方法、装置、存储介质及终端设备 | |
CN104391754B (zh) | 一种任务异常的处理方法及装置 | |
RU2603497C2 (ru) | Способ управления исполнением задачи в компьютерной системе | |
CN112486551B (zh) | 一种小程序全局实时组件的实现方法 | |
CN105550028A (zh) | 一种基于缓存锁的多任务时序执行方法及系统 | |
US20160202977A1 (en) | Handling time intensive instructions | |
CN112035839A (zh) | 一种竞态条件漏洞利用的检测方法及装置 | |
CN111198689B (zh) | 一种代码执行方法、装置及计算机可读存储介质 | |
CN111767155A (zh) | 死锁检测方法、装置、设备及计算机可读存储介质 | |
CN112148420B (zh) | 基于容器技术的异常任务处理方法、服务器及云平台 | |
CN105487847B (zh) | 一种功能发布方法和设备 | |
CN112685147A (zh) | 中断响应方法、装置及可读存储介质 | |
US20190102268A1 (en) | Semiconductor device | |
CN113886349A (zh) | 计费系统参数装载共享方法、装置及计算设备 | |
CN111949362A (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 |