CN100530105C - 多任务软件系统中并发事件的处理装置和方法 - Google Patents
多任务软件系统中并发事件的处理装置和方法 Download PDFInfo
- Publication number
- CN100530105C CN100530105C CNB2005100801655A CN200510080165A CN100530105C CN 100530105 C CN100530105 C CN 100530105C CN B2005100801655 A CNB2005100801655 A CN B2005100801655A CN 200510080165 A CN200510080165 A CN 200510080165A CN 100530105 C CN100530105 C CN 100530105C
- Authority
- CN
- China
- Prior art keywords
- concurrent
- event
- incident
- module
- task
- 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
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种多任务软件系统中并发事件的处理装置和方法。所述的装置主要包括:任务模块:用于在多任务软件系统中的可并发事件需要被处理时,向并发处理模块提交该事件,并根据并发处理模块返回的该事件的并发控制信息,对该事件进行相应的处理;并发处理模块:用于维护多任务软件系统中可并发事件类型的并发规则和任务模块提交过来的事件的状态信息,根据该并发规则和状态信息,生成接收到的提交事件的并发控制信息,并将该并发控制信息传递给任务模块。利用本发明所述装置可以使得多任务软件系统中并发事件处理的设计以及实现更加简单,使得多任务软件系统的维护工作更加方便。
Description
技术领域
本发明涉及通讯领域,尤其涉及一种多任务软件系统中并发事件的处理装置和方法。
背景技术
多任务软件系统是指可以同时处理多个事件的软件系统,在实际应用中,该多个事件并发的情况可能非常复杂。比如:如果一个多任务软件系统有10个可并发事件,则这10个事件的单次并发情况就会有10!/9!+10!/8!+10!/7!+10!/6!+10!/5!+10!/4!+10!/3!+10!/2!+10!/1!=6,235,300种。因此,如果多任务软件系统的实现是按照多个事件的各种并发情况分别进行处理,必将导致多任务软件系统的开发过程是非常艰难而痛苦的,多任务软件系统的实现是非常庞大而复杂的。
由于多任务软件系统同时处理的多个事件的事件类型、事件处理方式等的不同,该多个事件之间可能存在并发冲突,即该多个事件中一种类型的事件在被处理时,另一种类型的事件不能同时被处理。因此,通常需要制定一个多任务软件系统的并发规则,该并发规则根据多任务软件系统中所有可并发事件之间的冲突情况,规定了多任务软件系统如何处理所有可并发事件。
现有技术中一种多任务软件系统中并发事件的处理方法为:为每一个多任务软件系统中可并发的事件设置一个状态标志,该状态标志标识该事件是否正在处理中。当某一个事件需要被处理时,根据多任务软件系统的所有可并发事件的状态标志以及多任务软件系统的并发规则,决定该事件是否可以被并发处理,并决定其他事件该如何处理。
该方法的缺点为:该方法只适合于并发事件比较少的多任务软件系统。由于上述的多任务软件系统的并发规则是固化在编码中的,当有新的事件加入或原有的事件需要剔除时,就需要对该并发规则进行调整,因为该并发规则是固化在多任务软件系统的所有事件处理过程的编码中,因此,对该并发规则的调整将涉及到多任务软件系统的所有事件处理过程,使得多任务软件系统的维护工作变得极其繁重。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种多任务软件系统中并发事件的调度装置和方法,从而使得多任务软件系统的并发事件处理设计以及实现更加简单,使得多任务软件系统的维护工作更加方便。
本发明的目的是通过以下技术方案实现的:
一种多任务软件系统中并发事件的处理装置,包括:
任务模块:用于在多任务软件系统中的可并发事件需要被处理时,向并发处理模块提交该事件,并根据并发处理模块返回的该事件的并发控制信息,对该事件进行相应的处理;
并发处理模块:用于维护多任务软件系统中可并发事件类型的并发规则和任务模块提交过来的事件的状态信息,根据该并发规则和状态信息,生成接收到的提交事件的并发控制信息,并将该并发控制信息传递给任务模块。
所述的任务模块具体包括:
事件提交模块:用于当可并发事件需要被处理时,向并发处理模块提交该事件,并接收并发处理模块返回的该事件的并发控制信息,将该并发控制信息传递给事件处理模块,将事件处理模块返回的事件处理状态信息传递给并发处理模块;
事件处理模块:用于根据接收到的并发控制信息,对相应的可并发事件进行相应的事务处理或者将该可并发事件挂起或者将该可并发事件丢弃,并返回事件处理状态信息给事件提交模块。
所述的任务模块还包括:
事件标识模块:用于当可并发事件需要被处理时,生成在多任务软件系统的整个运行期内唯一标识该事件的事件标识,并将该事件标识传递给事件处理模块和事件提交模块。
所述的并发处理模块具体包括:
并发规则模块:用于定义和维护多任务软件系统中所有可并发事件类型的并发规则,并通过接口将该并发规则传递给并发控制和调度模块;
并发控制和调度模块:用于维护所有接收到的提交事件的状态信息,并根据该状态信息和接收到的并发规则,生成接收到的提交事件的并发控制信息,并将该并发控制信息返回给任务模块。
所述的并发规则模块包括:
并发规则矩阵模块:用于使用矩阵来集中表示多任务软件系统中所有可并发事件类型的并发规则。
所述的并发控制和调度模块具体包括:
并发调度模块:用于维护所有正在处理的和所有处于等待处理状态的事件的状态信息,其中包括事件的类型和优先级信息,并将该事件状态信息传递给并发控制模块;
并发控制模块:用于根据接收到的并发规则和并发调度模块传递过来的事件状态信息,确定接收到的提交事件的状态信息,并生成相应的并发控制信息,将该并发控制信息传递给任务模块;
事件处理状态信息接收模块:用于接收任务模块返回的事件处理状态信息,当接收到事件处理完毕的状态信息后,则通知并发调度模块将处于等待处理状态的事件中优先级最高的事件提交给并发控制模块。
所述的并发调度模块包括:
当前正在处理的事件列表:用于按照优先级从高到低排列所有正在处理的事件;
等待处理的事件列表:用于按照优先级从高到低排列所有正处于等待处理状态的事件。
所述的并发控制模块具体包括:
并发判断模块:用于根据接收到的并发规则,判断接收到的提交事件当前能不能并发,如果能并发,则通知并发调度模块将该事件加入当前正在处理的事件列表,生成该事件的并发控制信息,并将该信息传递给任务模块;如果不能并发,则将该事件提交给优先级判断模块;
优先级判断模块:用于在当前正在处理的事件列表中找出所有与提交事件存在并发冲突的事件,然后判断提交事件的优先级是否大于所有查找出来的事件的优先级,如果是,则通知并发调度模块将该事件加入当前正在处理的事件列表,将所有查找出来的事件加入等待处理的事件列表或丢弃;否则,将该事件加入等待处理的事件列表,然后生成相应的并发控制信息,并将该信息传递给任务模块。
所述的并发控制模块包括:
当前的并发规则生成模块:用于根据多任务软件系统中所有正在处理的事件类型的并发规则,通过进行与运算得到当前的并发规则列表,并把该表传递给并发判断模块。
一种多任务软件系统中并发事件的处理方法,包括:
A、使用矩阵来集中表示多任务软件系统中所有可并发事件类型的并发规则,根据所述并发规则及接收的可并发事件的状态信息,生成所述可并发事件的并发控制信息;
B、根据所述并发控制信息对所述可并发事件进行相应处理。
所述的步骤A还包括:
根据多任务软件系统中所有正在处理的事件类型的并发规则,通过进行与运算得到当前的并发规则列表。
所述的步骤B具体包括:
B1、根据多任务软件系统中所有正在处理的事件类型的并发规则,判断当前需要被处理的可并发事件能不能并发,如果能,则执行步骤B2;否则,执行步骤B3;
B2、确定当前需要被处理的可并发事件的状态为正在处理状态,对该事件进行相应的事务处理;
B3、根据所述需要被处理的可并发事件的优先级和存在并发冲突的所有事件的优先级之间的关系,确定该需要被处理的可并发事件能不能并发。
所述的步骤B3具体包括:
B31、在当前正在处理的事件中找出所有与该需要被处理的可并发事件存在并发冲突的事件,如果该需要被处理的可并发事件的优先级大于所有查找到的事件的优先级,则执行步骤B32;否则,执行步骤B33;
B32、确定需要被处理的可并发事件的状态为正在处理状态,对该事件进行相应的事务处理,将查找到的事件的状态更新为等待处理状态并将该事件挂起,或者,将查找到的事件直接丢弃;
B33、确定该当前需要被处理的可并发事件的状态为等待处理状态,将该事件挂起。
所述的步骤B还包括:
在多任务软件系统中一个正在处理的事件处理完毕后,则处于等待处理状态的事件中优先级最高的事件成为当前需要被处理的可并发事件。
由上述本发明提供的技术方案可以看出,本发明和现有技术相比具有如下优点:
1、本发明采用集中的并发控制与并发调度处理策略,使得多任务软件系统的并发事件处理设计以及实现更加简单,使得多任务软件系统的并发事件处理修改以及维护更加方便。
2、本发明将事件的并发控制、并发调度与事件的具体处理相分离,将事件的并发控制与事件的并发调度相分离,使得多任务软件系统的开发人员可以集中精力在事件并发规则的定义,事件并发调度算法的优化,以及事件的正确处理,而不必关心错综复杂的事件并发情况以及事件并发冲突。
3、在本发明中,任务可以访问处理事件列表,并可以获取当前正在处理的所有事件信息,从而使得任务可以依据当前正在处理的事件信息,对相应事件的处理过程和处理方法进行适当的优化或调整。
附图说明
图1为本发明所述装置的具体结构图;
图2为本发明所述实施例的基本结构图;
图3为本发明所述实施例中多个事件并发控制与并发调度装置的结构图;
图4为本发明所述实施例在任务提交事件时的并发控制与并发调度处理流程图;
图5为本发明所述实施例在收到事件处理完成确认消息后的并发控制与并发调度处理流程图;
图6为本发明所述方法的具体处理流程图。
具体实施方式
本发明提供了一种多任务软件系统中并发事件的调度装置和方法。本发明的核心为:在多任务软件系统中,采用集中的并发控制与并发调度处理策略,将事件的并发控制、并发调度与事件的具体处理相分离,将事件的并发控制与事件的并发调度相分离。
下面结合附图来详细描述本发明,本发明所述装置的具体结构图如图1所示,包括如下模块:
任务模块、用于在多任务软件系统中的可并发事件需要被处理时,向并发处理模块提交该事件,并根据并发处理模块返回的该事件的并发控制信息,对该事件进行相应的处理。任务模块包括:事件标识模块、事件提交模块和事件处理模块。
其中,事件标识模块、用于根据接收到的事件提交模块传递过来的申请,生成一个唯一的事件标识,然后,将该事件标识传递给事件处理模块和事件提交模块。该事件标识由事件标识模块统一分配并管理,在多任务软件系统的整个运行期内唯一标识该事件。
其中,事件提交模块、用于当接收到事件标识模块传递过来的事件标识后,将该事件标识所标识的事件提交给并发处理模块,并接收并发处理模块返回的该事件的并发控制信息,将该并发控制信息传递给事件处理模块。
其中,事件处理模块、用于根据接收到的事件的并发控制信息和事件标识,对该事件进行相应的处理,包括将该事件暂时挂起或丢弃,或者进行其它适当的处理并在处理完毕后返回状态信息给并发处理模块。
并发处理模块、用于维护多任务软件系统中所有可并发事件类型的并发规则,根据该并发规则和所有正在处理的事件的类型和优先级信息,生成任务模块提交过来的需要被处理的事件的并发控制信息,并将该并发控制信息返回给任务模块。并发处理模块包括:并发控制和调度模块和并发规则模块。
其中,并发规则模块、用于定义和维护多任务软件系统中所有可并发事件类型的并发规则,并将该并发规则传递给并发控制和调度模块,该并发规则可以通过矩阵来表示。因此,并发规则模块可以包括并发规则矩阵模块,并发规则矩阵模块用于使用矩阵来集中表示多任务软件系统中所有可并发事件类型的并发规则。
其中,并发控制和调度模块、用于根据接收到的并发规则,和任务模块提交过来的需要被处理的事件的类型和优先级信息,以及所有正在处理的事件的类型和优先级信息,生成针对任务模块提交过来的事件的并发控制信息,并将该并发控制信息返回给任务模块。并发控制和调度模块包括:并发控制模块、并发调度模块和事件处理状态信息接收模块。
其中,并发调度模块、用于维护所有正在处理的和处于等待处理的事件的类型和优先级信息等事件状态信息,所有正在处理的和处于等待处理的事件按照其优先级从高到低进行排序,分别构成当前正在处理的事件列表和等待处理的事件列表。
其中,事件处理状态信息接收模块、用于接收任务模块返回的事件处理状态信息,当接收到事件处理完毕的状态信息后,则通知并发调度模块将处于等待处理状态的事件中优先级最高的事件提交给并发控制模块。
其中,并发控制模块、用于根据接收到的并发规则和所有正在处理的事件的类型,生成并维护多任务软件系统当前的并发规则列表。根据该当前的并发规则列表和并发调度模块传递过来的事件信息,对提交事件进行相应的处理,生成相应的并发控制信息,并将该并发控制信息返回给任务模块。并发控制模块包括:并发判断模块、优先级判断模块和当前的并发规则生成模块。
并发判断模块:用于根据接收到的并发规则,判断接收到的提交事件当前能不能并发,如果能并发,则通知并发调度模块将该事件加入当前正在处理的事件列表,通知当前的并发规则生成模块更新当前的并发规则列表,生成该事件的并发控制信息,并将该信息传递给任务模块,该信息可以通知负责处理该提交事件的任务进行相应事件处理;如果不能并发,则将该事件提交给优先级判断模块;
优先级判断模块:用于在当前正在处理的事件列表中找出所有与提交事件存在并发冲突的事件,然后判断提交事件的优先级是否大于所有查找出来的事件的优先级,如果是,则通知并发调度模块将该事件加入当前正在处理的事件列表,将所有查找出来的事件加入等待处理的事件列表或丢弃,通知当前的并发规则生成模块更新当前的并发规则列表;否则,将该事件加入等待处理的事件列表,然后生成相应的并发控制信息,并将该信息传递给任务模块。
当前的并发规则生成模块:用于根据多任务软件系统中所有正在处理的事件类型的并发规则,通过进行与运算得到当前的并发规则列表,并把该表传递给并发判断模块。
本发明提供了一个上面所述装置的具体实施例,该实施例的基本结构图如图2所示。
在图2所示的本发明所述实施例的基本结构图中,包括多个事件并发控制与并发调度装置和任务模块。多个事件并发控制与并发调度装置的结构图如图3所示。包括:事件标识模块、基于优先级的多个事件并发调度模块、基于并发规则的多个事件并发控制模块和并发规则模块。该实施例的具体工作过程如下:
任务模块由多个子任务模块组成,每一个子任务模块都有一个唯一的任务标识,负责既定事件的处理。
为了更好地描述该实施例,我们先介绍一下多任务软件系统的并发规则的概念。
假设多任务软件系统共有A,B,C,D,E,F,G等7个可并发事件类型。其中事件类型为A的事件的并发规则如表1所示。则该并发规则定义,事件类型为A的事件发生时,事件类型为A,B,D,F的事件可以被并发处理,事件类型为C,E,G的事件不能被并发处理。其中事件类型为B的事件的并发规则如表2所示。则该并发规则定义,事件类型为B的事件发生时,事件类型为A,C,D的事件可以被并发处理,而事件类型为B,E,F,G的事件不能被并发处理。
表1事件类型为A的事件的并发规则
A | B | C | D | E | F | G | |
A | TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | FALSE |
表2事件类型为B的事件的并发规则
A | B | C | D | E | F | G | |
B | TRUE | FALSE | TRUE | TRUE | FALSE | FALSE | FALSE |
在该实施例中,多个事件并发控制与并发调度装置中的并发规则模块负责定义和维护所有可并发事件类型的并发规则,该并发规则可以通过并发规则矩阵来表示。并发规则模块需要根据该并发规则矩阵,通过并发规则模块接口向基于并发规则的多个事件并发控制模块提供相应事件类型的并发规则。
比如,假设多任务软件系统共有A,B,C,D,E,F,G等7个可并发事件类型,则该多任务软件系统的所有可并发事件类型的并发规则矩阵可定义为表3的形式,行定义为正在并发的事件类型,列定义为对应该并发事件类型的其他事件类型的并发规则。
表3各种事件类型的并发规则矩阵
A | B | C | D | E | F | G | |
A | TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | FALSE |
B | TRUE | FALSE | TRUE | TRUE | FALSE | FALSE | FALSE |
C | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE |
D | TRUE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE |
E | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE |
F | FALSE | FALSE | TRUE | TRUE | TRUE | FALSE | FALSE |
G | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE |
在多任务软件系统初始化或者当前系统没有事件发生时,维护在基于并发规则的多个事件并发控制模块中的多任务软件系统当前的并发规则列表各项全部为真。即此时允许任何一个可并发事件并发。
在多任务软件系统中有单一事件类型发生或并发时,则多任务软件系统当前的并发规则列表就是该事件类型的并发规则列表。当有多个事件类型并发时,则基于并发规则的多个事件并发控制模块通过并发规则模块接口获取相应事件类型的并发规则列表,将这些并发规则列表各项进行与运算,就获得当前的并发规则列表。
比如,当多任务软件系统中只有事件类型为A的事件发生时,则当前的并发规则列表如表4所示。该并发规则列表表示此时多任务软件系统只允许事件类型为A,B,D,F的事件并发处理,而事件类型为C,E,G的事件不能被并发处理。
如果此时事件类型为B的事件又并发(因为根据此时的并发规则列表,事件类型为B的事件可以被并发处理),则基于并发规则的多个事件并发控制模块通过并发规则模块接口获取事件B的并发规则列表,然后,将表1所示的事件A的并发规则列表和表2所示的事件B的并发规则列表各项相与,将得到如表5所示的当前的并发规则列表。该并发规则列表表示此时多任务软件系统只允许事件类型为A,D的事件并发处理,而事件类型为B,C,E,F,G的事件不能被并发处理。
如果此时事件类型为A的事件处理完成(此时多任务软件系统只有事件类型为B的事件在被处理),则当前的并发规则列表又会被更新为表6所示。该并发规则列表表示此时多任务软件系统只允许事件类型为A,C,D的事件并发处理,而事件类型为B,E,F,G的事件不能被并发处理。
表4事件类型为A的事件发生时的并发规则列表
A | B | C | D | E | F | G |
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | FALSE |
表5事件类型为A与B的事件发生时的并发规则列表
A | B | C | D | E | F | G |
TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
表6事件类型为B的事件发生时的并发规则列表
A | B | C | D | E | F | G |
TRUE | FALSE | TRUE | TRUE | FALSE | FALSE | FALSE |
多任务软件系统中的每一个可并发事件都有其事件优先级和抢占方式。事件优先级用于标识该事件的优先处理等级,抢占方式用于标识该提交事件正在处理时,如果高优先级事件发生而且该提交事件被抢占后,该提交事件的处理方式,其中包括该提交事件可以被丢弃或者被挂起。
当多任务软件系统中的一个可并发事件需要被处理时,负责处理该事件的子任务模块便向多个事件并发控制与并发调度装置申请一个事件标识。该事件标识由多个事件并发控制与并发调度装置中的事件标识模块统一分配并管理,以保证在多任务软件系统的整个运行期内唯一标识该事件。子任务模块获取到多个事件并发控制与并发调度装置返回的事件标识后,便将该事件提交给多个事件并发控制与调度装置。
多个事件并发控制与并发调度装置接收到提交事件后,对该提交事件进行并发控制和并发调度处理。具体的处理过程如图4所示,包括如下步骤:
步骤4-1、向多个事件并发控制与并发调度装置提交事件。
当多任务软件系统中的一个可并发事件需要被处理时,子任务模块向多个事件并发控制与并发调度装置获取到事件标识后,便将该事件提交给多个事件并发控制与调度装置。
步骤4-2、判断该提交事件是否可以并发处理。
多个事件并发控制与并发调度装置接收到提交事件后,基于并发规则的多个事件并发控制模块根据当前的并发规则列表和提交事件的类型信息,判断该提交事件是否可以并发处理。如果是,则执行步骤4-3;否则,执行步骤4-4。
步骤4-3、将提交事件加入处理事件列表。
如果基于并发规则的多个事件并发控制模块依据当前的并发规则列表,判定该提交事件可以并发,即提交事件当前可以被处理,则通知基于优先级的多个事件并发调度模块按照其优先级将该提交事件加入当前正在处理的事件列表,并根据该提交事件的事件类型更新当前的并发规则列表。然后,根据提交事件的任务标识,通知负责处理该提交事件的子任务模块进行相应事件处理。
步骤4-4、确定正在处理的事件当中与该提交事件存在并发冲突的所有事件。
如果基于并发规则的多个事件并发控制模块依据当前的并发规则列表,判定该提交事件不可以并发,即依据当前的并发规则,存在当前正在处理的事件与该提交事件的并发冲突。于是,基于并发规则的多个事件并发控制模块查看基于优先级的多个事件并发调度模块中的当前正在处理的事件列表,逐个找出与该提交事件存在并发冲突的事件,然后,执行步骤4-5。
步骤4-5、判断提交事件的优先级是否高于存在并发冲突的所有事件。
基于并发规则的多个事件并发控制模块判断提交事件的优先级是否高于查找到的存在并发冲突的所有事件,如果是,则执行步骤4-7;否则,执行步骤4-6。
步骤4-6、将提交事件加入等待事件列表。
如果该提交事件的优先级较低,低于存在并发冲突的所有事件中优先级最高的事件,则基于并发规则的多个事件并发控制模块通知基于优先级的多个事件并发调度模块按照其优先级将该提交事件加入等待处理的事件列表。然后,根据提交事件的任务标识,通知负责处理该提交事件的子任务模块将该提交事件暂时挂起。
步骤4-7、将提交事件加入处理事件列表,将存在并发冲突的所有事件挂取或放弃。
如果该提交事件的优先级较高,高于存在并发冲突的所有事件的优先级。于是,多个事件并发控制与调度装置就会根据所有当前正在处理的存在并发冲突的所有事件的任务标识,通知负责处理所有这些事件的子任务模块根据所有这些事件的抢占方式,丢弃或者暂时挂起所有这些当前正在处理的存在并发冲突的事件。对于丢弃的事件,基于优先级的多个事件并发调度模块将该事件从当前正在处理的事件列表中去除。对于挂起的事件,基于优先级的多个事件并发调度模块将该事件从当前正在处理的事件列表中去除后,将其按照事件的优先级加入等待处理的事件列表。同时,负责该事件处理的子任务模块对被挂起的事件进行保存相关数据等适当的处理。
然后。基于优先级的多个事件并发调度模块按照其优先级将该提交事件加入当前正在处理的事件列表,基于并发规则的多个事件并发控制模块根据该提交事件的事件类型更新当前的并发规则列表。根据提交事件的任务标识,通知负责处理该提交事件的子任务模块进行相应事件处理。
在该实施例中,为了让多个事件并发控制与调度装置及时正确地了解各事件的当前状态,任务模块需要向多个事件并发控制与调度装置返回事件调度状态确认信息。任务模块需要返回事件调度状态确认信息的情况如下:
1、多个事件并发控制与调度装置通知任务处理事件时,任务模块返回确认收到事件处理通知;
2、多个事件并发控制与调度装置通知任务挂起事件时,任务模块返回确认收到事件挂起通知;
3、多个事件并发控制与调度装置通知任务丢弃事件时,任务模块返回确认收到事件丢弃通知;
4、在任何事件处理完成时,任务模块向多个事件并发控制与调度装置返回确认事件处理完成。
在上述的四种情况中,事件处理完成时的状态确认信息上报是必须的,其他情况的事件调度状态确认是可选的。当任务模块向多个事件并发控制与调度装置返回一个确认事件处理完成的状态确认信息后,多个事件并发控制与并发调度装置需要进行相应的并发控制和并发调度处理,具体处理过程如图5所示,包括如下步骤:
步骤5-1、向多个事件并发控制与并发调度装置返回事件处理完成状态报告。
当任务模块将正在处理的事件列表中的一个事件处理完成后,便向多个事件并发控制与并发调度装置返回事件处理完成状态报告。
步骤5-2、判断等待列表中最高优先级事件是否可以并发处理。
多个事件并发控制与并发调度装置收到事件处理完成状态报告后,基于并发规则的多个事件并发控制模块便根据当前的并发规则列表,判断等待列表中优先级最高的事件当前是否可以并发处理,如果可以,则执行步骤5-3;否则,执行步骤5-4。
步骤5-3、将该等待事件加入处理事件列表。
如果基于并发规则的多个事件并发控制模块依据当前的并发规则列表,判定该等待事件可以并发,即该等待事件当前可以被处理,则通知基于优先级的多个事件并发调度模块按照其优先级将该等待事件加入当前正在处理的事件列表,并根据该等待事件的事件类型更新当前的并发规则列表。然后,根据提交该等待事件的任务标识,通知负责处理该等待事件的子任务模块进行相应事件处理。
步骤5-4、确定正在处理的事件当中与该等待事件存在并发冲突的所有事件。
如果基于并发规则的多个事件并发控制模块依据当前的并发规则列表,判定该等待事件不可以并发,即依据当前的并发规则,存在当前正在处理的事件与该等待事件的并发冲突。于是,基于并发规则的多个事件并发控制模块查看基于优先级的多个事件并发调度模块中的当前正在处理的事件列表,逐个找出所有与该等待事件存在并发冲突的事件,然后,执行步骤5-5。
步骤5-5、判断该等待事件的优先级是否高于存在并发冲突的所有事件。
多个事件并发控制与调度装置将该等待事件的优先级和找出的所有与该等待事件存在并发冲突的事件的优先级进行比较,如果该等待事件的优先级较高,高于存在并发冲突的所有事件的优先级。则执行步骤5-7;否则,执行步骤5-6。
步骤5-6、将该等待事件保留在等待事件列表。
如果该等待事件的优先级较低,低于存在并发冲突的所有事件中优先级最高的事件,则基于并发规则的多个事件并发控制模块通知基于优先级的多个事件并发调度模块将该等待事件继续停留在等待处理的事件列表。
步骤5-7、将该等待事件加入处理事件列表,将存在并发冲突的所有事件挂取或放弃。
多个事件并发控制与调度装置根据所有当前正在处理的存在并发冲突的所有事件的任务标识,通知负责处理所有这些事件的子任务模块根据所有这些事件的抢占方式,丢弃或者暂时挂起所有这些当前正在处理的存在并发冲突的事件。对于丢弃的事件,基于优先级的多个事件并发调度模块将该事件从当前正在处理的事件列表中去除。对于挂起的事件,基于优先级的多个事件并发调度模块将该事件从当前正在处理的事件列表中去除后,将其按照事件的优先级加入等待处理的事件列表。同时,负责该事件处理的子任务模块对被挂起的事件进行保存相关数据等适当的处理。
然后。基于优先级的多个事件并发调度模块按照其优先级将该等待事件加入当前正在处理的事件列表,基于并发规则的多个事件并发控制模块根据该等待事件的事件类型更新当前的并发规则列表。根据等待事件的任务标识,通知负责处理该等待事件的子任务模块进行相应事件处理。
在现有技术中虽然已经有了根据并发规则,对多任务软件系统中可并发事件进行处理的方法,但现有的处理方法没有采取可并发事件类型的优先级的概念。因此,本发明将可并发事件类型的并发规则和优先级相结合,还提出了一种多任务软件系统中并发事件的处理方法,该方法包括如下步骤:
步骤6-1、设置多任务软件系统中可并发事件类型的并发规则和优先级信息。
本发明所述方法首先需要在多任务软件系统中,设置所有可并发事件类型的并发规则和优先级信息。所有可并发事件类型的并发规则可以通过并发矩阵来表示。
该方法还可以根据多任务软件系统中所有正在处理的事件类型的并发规则,通过进行与运算得到当前的并发规则列表。
步骤6-2、根据多任务软件系统中所有正在处理的事件类型的并发规则,判断当前需要被处理的可并发事件能不能并发。
在多任务软件系统中的可并发事件需要被处理时,根据多任务软件系统中所有正在处理的事件类型的并发规则,判断当前需要被处理的可并发事件能不能并发。
如果已经生成了多任务软件系统当前的并发规则列表,则根据该并发规则列表判断当前需要被处理的可并发事件能不能并发。
如果判断当前需要被处理的可并发事件能够并发,则执行步骤6-3;否则,执行步骤6-4。
步骤6-3、确定当前需要被处理的可并发事件的状态为正在处理状态,对该事件进行相应的事务处理。
如果根据多任务软件系统中所有正在处理的事件类型的并发规则或当前的并发规则列表,判定该事件可以并发,即该事件当前可以被处理,则将该当前需要被处理的可并发事件按照其优先级加入正在处理状态,对该事件进行相应的事务处理。并根据所有正在处理的事件类型的并发规则更新当前的并发规则列表。
在多任务软件系统中一个正在处理的事件处理完毕后,则处于等待处理状态的事件中优先级最高的事件成为当前需要被处理的可并发事件。
步骤6-4、根据所述需要被处理的可并发事件的优先级和存在并发冲突的所有事件的优先级之间的关系,确定该需要被处理的可并发事件能不能并发。
如果根据多任务软件系统中所有当前正在处理的事件类型的并发规则或当前的并发规则列表,判定该事件不能并发,则在多任务软件系统当前正在处理的事件中找出所有与该事件存在并发冲突的事件,并判断查找出来的事件和该事件的优先级的关系。
如果该需要被处理的可并发事件的优先级大于所有查找到的事件的优先级,则执行步骤6-5;否则,执行步骤6-6。
步骤6-5、确定需要被处理的可并发事件的状态为正在处理状态,对该事件进行相应的事务处理。
将该当前需要被处理的可并发事件按照其优先级加入正在处理状态,对该事件进行相应的事务处理。将查找到的事件的状态更新为等待处理状态并将该事件挂起,或者,将查找到的事件直接丢弃。
根据多任务软件系统中所有正在处理的事件类型的并发规则更新当前的并发规则列表。
步骤6-6、确定该当前需要被处理的可并发事件的状态为等待处理状态,将该事件挂起。
确定该当前需要被处理的可并发事件的状态为等待处理状态,将该事件按照其优先级加入等待处理状态,将该事件挂起。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (14)
1、一种多任务软件系统中并发事件的处理装置,其特征在于,包括:
任务模块:用于在多任务软件系统中的可并发事件需要被处理时,向并发处理模块提交该事件,并根据并发处理模块返回的该事件的并发控制信息,对该事件进行相应的处理;
并发处理模块:用于维护多任务软件系统中可并发事件类型的并发规则和任务模块提交过来的事件的状态信息,根据该并发规则和状态信息,生成接收到的提交事件的并发控制信息,并将该并发控制信息传递给任务模块。
2、根据权利要求1所述多任务软件系统中并发事件的处理装置,其特征在于,所述的任务模块具体包括:
事件提交模块:用于当可并发事件需要被处理时,向并发处理模块提交该事件,并接收并发处理模块返回的该事件的并发控制信息,将该并发控制信息传递给事件处理模块,将事件处理模块返回的事件处理状态信息传递给并发处理模块;
事件处理模块:用于根据接收到的并发控制信息,对相应的可并发事件进行相应的事务处理或者将该可并发事件挂起或者将该可并发事件丢弃,并返回事件处理状态信息给事件提交模块。
3、根据权利要求2所述多任务软件系统中并发事件的处理装置,其特征在于,所述的任务模块还包括:
事件标识模块:用于当可并发事件需要被处理时,生成在多任务软件系统的整个运行期内唯一标识该事件的事件标识,并将该事件标识传递给事件处理模块和事件提交模块。
4、根据权利要求1、2或3所述多任务软件系统中并发事件的处理装置,其特征在于,所述的并发处理模块具体包括:
并发规则模块:用于定义和维护多任务软件系统中所有可并发事件类型的并发规则,并通过接口将该并发规则传递给并发控制和调度模块;
并发控制和调度模块:用于维护所有接收到的提交事件的状态信息,并根据该状态信息和接收到的并发规则,生成接收到的提交事件的并发控制信息,并将该并发控制信息返回给任务模块。
5、根据权利要求4所述多任务软件系统中并发事件的处理装置,其特征在于,所述的并发规则模块包括:
并发规则矩阵模块:用于使用矩阵来集中表示多任务软件系统中所有可并发事件类型的并发规则。
6、根据权利要求5所述多任务软件系统中并发事件的处理装置,其特征在于,所述的并发控制和调度模块具体包括:
并发调度模块:用于维护所有正在处理的和所有处于等待处理状态的事件的状态信息,其中包括事件的类型和优先级信息,并将该事件状态信息传递给并发控制模块;
并发控制模块:用于根据接收到的并发规则和并发调度模块传递过来的事件状态信息,确定接收到的提交事件的状态信息,并生成相应的并发控制信息,将该并发控制信息传递给任务模块;
事件处理状态信息接收模块:用于接收任务模块返回的事件处理状态信息,当接收到事件处理完毕的状态信息后,则通知并发调度模块将处于等待处理状态的事件中优先级最高的事件提交给并发控制模块。
7、根据权利要求6所述多任务软件系统中并发事件的处理装置,其特征在于,所述的并发调度模块包括:
当前正在处理的事件列表:用于按照优先级从高到低排列所有正在处理的事件;
等待处理的事件列表:用于按照优先级从高到低排列所有正处于等待处理状态的事件。
8、根据权利要求7所述多任务软件系统中并发事件的处理装置,其特征在于,所述的并发控制模块具体包括:
并发判断模块:用于根据接收到的并发规则,判断接收到的提交事件当前能不能并发,如果能并发,则通知并发调度模块将该事件加入当前正在处理的事件列表,生成该事件的并发控制信息,并将该信息传递给任务模块;如果不能并发,则将该事件提交给优先级判断模块;
优先级判断模块:用于在当前正在处理的事件列表中找出所有与提交事件存在并发冲突的事件,然后判断提交事件的优先级是否大于所有查找出来的事件的优先级,如果是,则通知并发调度模块将该事件加入当前正在处理的事件列表,将所有查找出来的事件加入等待处理的事件列表或丢弃,否则,将该事件加入等待处理的事件列表,然后生成相应的并发控制信息,并将该信息传递给任务模块。
9、根据权利要求8所述多任务软件系统中并发事件的处理装置,其特征在于,所述的并发控制模块包括:
当前的并发规则生成模块:用于根据多任务软件系统中所有正在处理的事件类型的并发规则,通过进行与运算得到当前的并发规则列表,并把该表传递给并发判断模块。
10、一种多任务软件系统中并发事件的处理方法,其特征在于,包括:
A、使用矩阵来集中表示多任务软件系统中所有可并发事件类型的并发规则,根据所述并发规则及接收的可并发事件的状态信息,生成所述可并发事件的并发控制信息;
B、根据所述并发控制信息对所述可并发事件进行相应处理。
11、根据权利要求10所述多任务软件系统中并发事件的处理方法,其特征在于,所述的步骤A还包括:
根据多任务软件系统中所有正在处理的事件类型的并发规则,通过进行与运算得到当前的并发规则列表。
12、根据权利要求10或11所述多任务软件系统中并发事件的处理方法,其特征在于,所述的步骤B具体包括:
B1、根据多任务软件系统中所有正在处理的事件类型的并发规则,判断当前需要被处理的可并发事件能不能并发,如果能,则执行步骤B2;否则,执行步骤B3;
B2、确定当前需要被处理的可并发事件的状态为正在处理状态,对该事件进行相应的事务处理;
B3、根据所述需要被处理的可并发事件的优先级和存在并发冲突的所有事件的优先级之间的关系,确定该需要被处理的可并发事件能不能并发。
13、根据权利要求12所述多任务软件系统中并发事件的处理方法,其特征在于,所述的步骤B3具体包括:
B31、在当前正在处理的事件中找出所有与该需要被处理的可并发事件存在并发冲突的事件,如果该需要被处理的可并发事件的优先级大于所有查找到的事件的优先级,则执行步骤B32;否则,执行步骤B33;
B32、确定需要被处理的可并发事件的状态为正在处理状态,对该事件进行相应的事务处理,将查找到的事件的状态更新为等待处理状态并将该事件挂起,或者,将查找到的事件直接丢弃;
B33、确定该当前需要被处理的可并发事件的状态为等待处理状态,将该事件挂起。
14、根据权利要求13所述多任务软件系统中并发事件的处理方法,其特征在于,所述的步骤B还包括:
在多任务软件系统中一个正在处理的事件处理完毕后,则处于等待处理状态的事件中优先级最高的事件成为当前需要被处理的可并发事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100801655A CN100530105C (zh) | 2005-06-30 | 2005-06-30 | 多任务软件系统中并发事件的处理装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100801655A CN100530105C (zh) | 2005-06-30 | 2005-06-30 | 多任务软件系统中并发事件的处理装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1889045A CN1889045A (zh) | 2007-01-03 |
CN100530105C true CN100530105C (zh) | 2009-08-19 |
Family
ID=37578323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100801655A Active CN100530105C (zh) | 2005-06-30 | 2005-06-30 | 多任务软件系统中并发事件的处理装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100530105C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567873B (zh) * | 2008-04-25 | 2013-05-15 | 锐迪科微电子(上海)有限公司 | 一种多任务并行处理方法及系统 |
CN101551758B (zh) * | 2009-05-13 | 2013-06-05 | 中兴通讯股份有限公司 | 一种实现设备管理任务并行工作的系统和方法 |
CN101741850B (zh) * | 2009-12-25 | 2012-05-30 | 北京邮电大学 | 面向混合网络服务的多任务并发执行系统及方法 |
CN101867647B (zh) * | 2010-04-30 | 2013-10-16 | 中兴通讯股份有限公司 | 一种移动终端中并发冲突的处理方法及装置 |
CN103530173B (zh) * | 2012-07-06 | 2018-07-17 | 上海宝信软件股份有限公司 | 动态权重事件处理系统和方法 |
US10447844B2 (en) | 2012-12-14 | 2019-10-15 | Apple Inc. | Method and apparatus for automatically setting alarms and notifications |
US20140171132A1 (en) | 2012-12-14 | 2014-06-19 | Apple Inc. | Method and Apparatus for Automatically Repeating Alarms and Notifications in Response to Device Motion |
CN107728785A (zh) * | 2017-10-16 | 2018-02-23 | 南京阿凡达机器人科技有限公司 | 机器人交互方法及其系统 |
US10854066B2 (en) | 2018-04-12 | 2020-12-01 | Apple Inc. | Methods and systems for disabling sleep alarm based on automated wake detection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0961204A2 (en) * | 1998-05-28 | 1999-12-01 | Hewlett-Packard Company | Thread based governor for time scheduled process execution |
CN1127017C (zh) * | 1997-10-23 | 2003-11-05 | 国际商业机器公司 | 线程切换控制方法及用于该方法的线程状态寄存器 |
CN1555521A (zh) * | 2000-10-30 | 2004-12-15 | �Ҵ���˾ | 协调数据存储子系统中数据存储设备管理操作的系统和方法 |
-
2005
- 2005-06-30 CN CNB2005100801655A patent/CN100530105C/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1127017C (zh) * | 1997-10-23 | 2003-11-05 | 国际商业机器公司 | 线程切换控制方法及用于该方法的线程状态寄存器 |
EP0961204A2 (en) * | 1998-05-28 | 1999-12-01 | Hewlett-Packard Company | Thread based governor for time scheduled process execution |
CN1555521A (zh) * | 2000-10-30 | 2004-12-15 | �Ҵ���˾ | 协调数据存储子系统中数据存储设备管理操作的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1889045A (zh) | 2007-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100530105C (zh) | 多任务软件系统中并发事件的处理装置和方法 | |
CN108536532B (zh) | 一种批量任务处理方法及系统 | |
Epema et al. | A worldwide flock of condors: Load sharing among workstation clusters | |
CN102063336B (zh) | 一种分布式计算多应用功能异步并发调度方法 | |
CN107657532A (zh) | 一种业务流程的处理方法及系统 | |
CN103019835A (zh) | 一种多核处理器中断资源优化处理系统和方法 | |
US20020107854A1 (en) | Method and system for managing lock contention in a computer system | |
CN102096599A (zh) | 一种多队列任务调度方法及相关系统和设备 | |
CN104102548A (zh) | 任务资源调度处理方法和系统 | |
CN103092682A (zh) | 异步网络应用程序处理方法 | |
CN102467415A (zh) | 一种业务面任务处理方法及设备 | |
CN112306719B (zh) | 一种任务调度方法与装置 | |
CN109101334A (zh) | 一种面向Zuul网关的微服务并发控制方法 | |
CN103595654A (zh) | 基于多核CPU的HQoS实现方法、装置及网络设备 | |
CN111722944B (zh) | 一种基于nio的airt-ros通信方法及系统 | |
Sachs et al. | Benchmarking publish/subscribe-based messaging systems | |
CN110782223A (zh) | Oa系统的通用工作流装置及通用工作流实现方法 | |
CN102054213A (zh) | 一种信息集成方法、装置及系统 | |
CN118069349A (zh) | 一种面向多场景的可变深度资源管理方法及系统 | |
WO2001016740A2 (en) | Efficient event waiting | |
CN113806064A (zh) | 作业调度方法、装置、系统及作业派发装置 | |
Mishra et al. | A memory-aware dynamic job scheduling model in Grid computing | |
CN109829005A (zh) | 一种大数据处理方法及装置 | |
US8869171B2 (en) | Low-latency communications | |
CN112596761B (zh) | 服务的更新发布方法、装置及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |