CN111475263A - 事件处理方法、设备及存储介质 - Google Patents
事件处理方法、设备及存储介质 Download PDFInfo
- Publication number
- CN111475263A CN111475263A CN202010279790.7A CN202010279790A CN111475263A CN 111475263 A CN111475263 A CN 111475263A CN 202010279790 A CN202010279790 A CN 202010279790A CN 111475263 A CN111475263 A CN 111475263A
- Authority
- CN
- China
- Prior art keywords
- event
- task
- state
- notification message
- changes
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000008859 change Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 17
- 238000013500 data storage Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012217 deletion Methods 0.000 abstract description 3
- 230000037430 deletion Effects 0.000 abstract description 3
- 230000001133 acceleration Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- WSFSSNUMVMOOMR-UHFFFAOYSA-N Formaldehyde Chemical compound O=C WSFSSNUMVMOOMR-UHFFFAOYSA-N 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- ZVKAMDSUUSMZES-NZQWGLPYSA-N OS II Natural products CC(=O)N[C@H]1[C@H](OC[C@@H](O)[C@@H](O)[C@@H](O)CO)O[C@H](CO)[C@H](O[C@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)[C@@H]1O[C@@H]3O[C@H](CO)[C@@H](O)[C@H](O)[C@H]3O ZVKAMDSUUSMZES-NZQWGLPYSA-N 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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/466—Transaction processing
-
- 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
- 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/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
-
- 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
Abstract
本发明实施例提供一种事件处理方法、设备及存储介质。该方法可应用于搭载有嵌入式实时操作系统的终端设备,该终端设备包括第一任务,该方法包括:第一任务确定第一任务的至少一个事件的状态发生变化,第一任务向订阅第一任务的至少一个事件的任务发布事件通知消息,事件通知消息用于指示至少一个事件的状态发生变化,其中事件状态发生变化包括事件对应的数据值发生变化、数据存储地址发生变化、事件被删除的至少一项。接收到上述事件通知消息的任务可根据事件通知消息执行相应的操作。通过上述处理方法可实现对任务或事件的实时监控与通知,可实现对如图像、速度、加速度、位置、温湿度等事件的监控与通知,提升用户在终端设备上的订阅体验。
Description
技术领域
本发明涉及嵌入式软件开发技术领域,尤其涉及一种事件处理方法、设备及存储介质。
背景技术
在嵌入式软件领域中,实时操作系统(RTOS)正得到越来越广泛的应用,种类也越来越多,例如RT-thread、FreeRTOS、uC/OS II等。其中,FreeRTOS是为数不多的同时具有实时性、开源性、可靠性、易用性、多平台支持等特点的嵌入式操作系统。
FreeRTOS提供一种事件机制,其功能主要是标记某个事件是否发生,若该事件发生,则会将相应事件标志位置为1,若该事件没有发生,事件标志位置为0。FreeRTOS中的每个任务都可以通过查询事件标志位来确定某一事件是否发生,实现多个任务的同步。一般情况下任务会堵塞,等待事件发生,事件发生后,才会执行其他事件。亦或者,任务等待一段时间,等待期间任务处于堵塞状态,超时或者事件发生后,解除堵塞状态。FreeRTOS还提供了一种通知机制,每个任务都有一个32位的通知值,即通过改变此通知值,来达到任务间的通知。
目前订阅某一事件,需要手动查询通知值,如果事件未发生,可以等待事件完成,或者等待一段时间后执行其他事件,在监控的事件较多时,上述过程较繁琐。
发明内容
本发明提供一种事件处理方法、设备及存储介质,实现对任务或事件的实时监控与通知,提升用户订阅体验。
本发明的第一方面提供一种事件处理方法,应用于终端设备,所述终端设备中包括第一任务,所述方法包括:
第一任务确定所述第一任务的至少一个事件的状态发生变化;
所述第一任务向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,所述事件通知消息用于指示所述至少一个事件的状态发生变化。
在一种可能的实现方式中,所述第一任务确定所述第一任务的至少一个事件的状态发生变化,包括:
所述第一任务通过轮询遍历事件链表中的不同事件对应的状态更新函数,确定所述第一任务的至少一个事件的状态发生变化。
在一种可能的实现方式中,所述第一任务通过轮询遍历事件链表中的不同事件对应的状态更新函数,确定所述第一任务的至少一个事件的状态发生变化,包括:
若所述第一任务的第一事件对应的状态更新函数的执行结果为第一执行结果,确定所述第一任务的第一事件的状态发生变化。
在一种可能的实现方式中,所述第一任务向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,包括:
所述第一任务采用消息队列向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息。
可选的,所述第一任务的至少一个事件的状态发生变化包括以下的至少一项:
所述第一任务的至少一个事件的数据值发生变化;
所述第一任务的至少一个事件的数据存储地址发生变化;
所述第一任务的至少一个事件被删除。
可选的,所述事件通知消息包括以下的任意一项:
事件的标识;
所述事件的标识以及所述事件对应的数据值;
所述事件的标识以及所述事件对应的数据值的地址信息;
所述事件的标识、所述事件对应的数据值以及所述数据值的地址信息。
在一种可能的实现方式中,所述方法还包括:
所述第一任务接收事件状态判断更新消息,所述事件状态判断更新消息用于指示所述第一任务中的第一事件对应的状态更新函数发生变化;
所述第一任务根据所述事件状态判断更新消息,确定所述第一任务的第一事件的状态是否发生变化。
可选的,所述事件状态判断更新消息包括所述第一事件的标识和判定数据的标识;
在一种可能的实现方式中,所述第一任务根据所述事件状态判断更新消息,确定所述第一任务的第一事件的状态是否发生变化,包括:所述第一任务根据所述第一事件的标识,获取所述第一事件对应的状态更新函数;
所述第一任务根据所述判定数据的标识,修改所述第一事件对应的状态更新函数中的判定数据,得到修改后的状态更新函数;
所述第一任务根据所述修改后的状态更新函数,确定所述第一任务的第一事件的状态是否发生变化。
本发明的第二方面提供一种终端设备,包括:
处理模块,用于确定第一任务的至少一个事件的状态发生变化;
发送模块,用于向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,所述事件通知消息用于指示所述至少一个事件的状态发生变化。
本发明的第三方面提供一种终端设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如本发明的第一方面中任一项所述的事件处理方法。
本发明的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如本发明的第一方面中任一项所述的事件处理方法。
本发明实施例提供一种事件处理方法、设备及存储介质。该方法可应用于搭载有嵌入式实时操作系统的终端设备,该终端设备包括第一任务,该方法包括:第一任务确定第一任务的至少一个事件的状态发生变化,第一任务向订阅第一任务的至少一个事件的任务发布事件通知消息,事件通知消息用于指示至少一个事件的状态发生变化,其中事件状态发生变化包括事件对应的数据值发生变化、数据存储地址发生变化、事件被删除的至少一项。接收到上述事件通知消息的任务可根据事件通知消息执行相应的操作。通过上述处理方法可实现对任务或事件的实时监控与通知,提升用户在终端设备上的订阅体验。
附图说明
图1为本发明实施例提供的一种事件处理方法的系统架构图;
图2为本发明实施例提供的一种事件处理方法的流程示意图;
图3为本发明实施例提供的某一任务中事件链表的结构示意图;
图4为本发明实施例提供的某一任务对应的消息队列的示意图;
图5为本发明实施例提供的一种事件处理方法的流程示意图;
图6为本发明实施例提供的一种终端设备的结构示意图;
图7为本发明实施例提供的一种终端设备的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明实施例能够以除了在这里图示或描述的那些以外的顺序实施。
本发明的说明书和权利要求书中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明的说明书中通篇提到的“一实施例”或“另一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一些实施例中”或“在本实施例中”未必一定指相同的实施例。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明实施例提供的事件处理方法可应用于搭载有嵌入式实时操作系统RTOS的终端设备,例如搭载有FreeRTOS的终端设备。FreeRTOS是一个迷你的实时操作系统内核,作为一个轻量级的操作系统,具有如下功能:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
本发明实施例的终端设备可以是便携式电子设备,例如智能手表等可穿戴设备,还可以是安防监控设备,例如摄像机等,还可以是车载终端设备、智能家居设备(例如智能电视、智能冰箱、智能音箱等)。对此本发明实施例不作任何限定,只要设备搭载轻量级操作系统即可。
下面对本发明实施例中的相关术语进行简要说明。
任务间通信:由于各任务之间都是相互独立地运行,大多数情况下为了系统安全地运行,任务之间不能直接操作对方的内存等资源,这时候就需要通过某种方式进行任务之间的数据传递,这一种数据在任务间传递的过程就是任务间通信。
消息队列:FreeRTOS系统提供的一种任务间通信的方式,每个任务都有自己的独立的消息队列,例如第一任务可以向第二任务的消息队列中放入想要传递的数据(或称之为消息),第二任务查询到第二任务的消息队列中存在消息,则可以将消息读取出来,从而实现任务间的数据传递。
事件订阅与发布机制:即一个任务的事件发生时,通知订阅该事件的任务,通知订阅事件就涉及到任务间通信。
目前的嵌入式操作系统,例如FreeRTOS,提供一种事件机制,可通过改变事件标志位来指示某一任务的事件发生变化。示例性的,假设任务A下创建了5个事件,这5个事件均没有发生时,事件标志位为00000,从最左边算起,分别对应事件1、2、3、4、5,若事件1发生变化,则事件标志位为10000,若事件1和3同时发生,则事件标志位为10100。FreeRTOS中的每个任务(包括任务A本身)都可以通过查询事件标志位确定任务A中的各个事件是否发生变化,实现任务间的同步。一般情况下任务发生堵塞,通常会等待对应的事件发生,事件发生后,才会执行其他事件。亦或者,任务等待一段时间,超时或者事件发生后,解除堵塞状态,执行其他事件。上述过程需要用户手动查询,在监控的事件较多时,查询工作量较大。
FreeRTOS还提供了一种通知机制,每个任务都有一个32位的通知值,即通过改变此通知值,来达到任务间的通知。例如,任务A的事件1发生变化,可改变订阅事件1的其他任务的通知值,其他任务需要手动查询该通知值,获知事件1发生了变化,且每个任务最多能够订阅的事件数量为32个。另外,事件发生变化时,只能获知该事件发生了变化,无法获取与该事件相关的数据信息,例如,监控任务包括监控车内空气质量的事件,若车内空气质量较差,该事件对应的事件标志位发生变化,但无法获取当前车内空气质量参数,例如PM2.5、甲醛值等。
为了解决上述问题,本申请实施例提供一种事件处理方法,通过实时监控事件状态,在确定某一事件或多个事件发生变化时,向订阅该事件的任务发送事件通知消息。上述方法可实现快速、实时的事件通知效果,且事件通知消息还可以包括与事件相关的数据信息,便于订阅该事件的任务进行数据查询。
图1为本发明实施例提供的事件处理方法的系统架构图,如图1所示,用户可以在搭载FreeRTOS的终端设备上创建任务A、B、C、D,其中,任务B、C、D均订阅任务A中的一个或多个事件,当任务A中的一个或多个事件发生时,任务A可向订阅任务A的任务B、C、D发送事件通知消息。需要说明的是,任务A不仅可以订阅其他任务的一个或多个事件,例如订阅任务B的一个事件,订阅任务C的多个事件,任务A还可以订阅任务A中的事件,例如任务A的事件1订阅任务A中的事件2。
示例性的,以车载移动终端为例,车载移动终端的主要功能是将车载当前的定位信息、运行状态、电池状态等数据通过网络反馈给用户。车载移动终端搭载FreeRTOS系统,车载移动终端中的每个任务都是互相独立的,每个任务都会实时监控自身任务中事件的状态,独立运行、处理各自的事务。每个任务控制一个版块,例如全球定位系统(GlobalPositioning System,GPS)版块、传感器版块、电源版块、网络版块等。其中GPS版块主要功能是实时获取定位信息、同步更新设备时间、设置电子围栏、记录里程。传感器版块主要检测设备是否存在急加速、急刹车、侧翻。电源版块主要功能是检测主电池与备用电池的状态,并能根据用户配置进行主电池与备用电池的切换。网络版块与服务器交互,并向用户传输实时数据。作为一种示例,如GPS版块中有电子围栏事件,若设备进入或者退出电子围栏时,会触发进入或者退出电子围栏事件,并通知网络板块。作为另一种示例,若电源版块中有主电池丢失或电量不足等事件,若发现主电池丢失或电量不足时,会切换备用电池,同时会通知GPS版块、传感器版块、网络版块等。上述这些版块在接收到主电池丢失或电量不足事件时,根据用户事先设定好的配置,看是否需要关闭该版块以达到省电状态。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明实施例提供的一种事件处理方法的流程示意图。为了便于理解,该实施例以订阅第一任务的至少一个事件的任务为第二任务为例,对方案进行说明,图示仅作为示例,订阅第一任务的某一事件的任务还可以是第一任务本身,对此本发明实施例不作限制。
如图2所示,本发明实施例提供的事件处理方法,包括如下步骤:
步骤101、第一任务确定第一任务的至少一个事件的状态发生变化。
在本步骤中,第一任务具体可通过轮询遍历事件链表中的不同事件对应的状态更新函数,确定第一任务的至少一个事件的状态发生变化。图3示出了某一任务中事件链表的结构示意图,如图3所示,事件链表中包括第一任务中多个事件对应的状态更新函数,第一任务中创建有多个事件,例如如图3所示的事件1、事件2、事件3,不同事件对应的状态更新函数不同,例如事件1、事件2、事件3对应的状态更新函数分别为函数1、函数2、函数3。事件对应的状态更新函数用于判定该事件的状态是否发生变化,第一任务执行事件对应的状态更新函数,根据状态更新函数的执行结果确定该事件的状态是否发生变化。
具体的,若第一任务的第一事件对应的状态更新函数的执行结果为第一执行结果,确定第一任务的第一事件的状态发生变化。若第一任务的第一事件对应的状态更新函数的执行结果为第二执行结果,确定第一任务的第一事件的状态无变化。作为一种示例,第一执行结果为true,确定第一任务的第一事件的状态发生变化,表明该第一事件发生。第二执行结果为false,确定第一任务的第一事件的状态无变化,表明该第一事件未发生。
在本发明实施例中,第一任务的至少一个事件的状态发生变化包括以下的至少一项:
(1)第一任务的至少一个事件的数据值发生变化。示例性的,第一任务包括监控车内空气质量的事件,若车内空气质量的某项参数,例如PM2.5的参数变化值超过预设参数变化阈值,第一任务确定车内空气质量发生变化。
(2)第一任务的至少一个事件的数据存储地址发生变化。其中,第一任务的某一事件的数据存储地址发生变化可以是指该事件在内存中的数据存储地址发生变化。
(3)第一任务的至少一个事件被删除。示例性的,第一任务监测到GPS模块由开启状态切换至关闭状态,车载定位事件失效,为了避免该事件占用内存空间,第一任务在确定该事件失效后,删除该事件,同时通知订阅该事件的其他任务。
需要说明的是,第一任务中创建的所有事件均存储在事件链表中。第一任务接收到创建事件之后,首先遍历事件链表,确定该创建事件是否已存在,若不存在,则将该事件存储在事件链表中。
步骤102、第一任务向订阅第一任务的至少一个事件的任务发布事件通知消息。
其中,事件通知消息用于指示至少一个事件的状态发生变化。
在本步骤中,第一任务采用消息队列向订阅第一任务的至少一个事件的任务发布事件通知消息。图4示出了某一任务对应的消息队列的示意图,如图4所示,任务B分别订阅了任务A的事件1以及任务C的事件2。任务A在确定任务A中的事件1的状态发生变化时,向订阅事件1的任务B的消息队列发送事件通知消息,如图4中的消息1。任务C在确定任务C中的事件2的状态发生变化时,向订阅事件2的任务B的消息队列发送事件通知消息,如图4中的消息2。任务B依次读取任务B的消息队列中的消息1和消息2,确定任务A事件1和任务C事件2的状态发送变化,对应执行相应的操作。
在本发明实施例中,第一任务向订阅第一任务的至少一个事件的任务发布事件通知消息之前,还包括如下步骤:第一任务确定订阅第一任务的至少一个事件的任务。
需要说明的是,订阅第一任务的至少一个事件包括订阅第一任务的第一事件,订阅第一任务的第一事件的任务可以是第一任务,也可以是除第一任务之外的其他任务。示例性的,第一任务的事件1可被第一任务本身订阅,也可以被其他任务,例如第二任务、第三任务订阅。
作为一种示例,以第一任务的第一事件的状态发生变化为例,第一任务通过查询订阅链表确定订阅第一任务的第一事件的任务。
其中,订阅链表用于存储订阅第一任务的任意事件的订阅消息。示例性的,第一任务从第一任务的消息队列中获取其他任务(比如第二任务)发送的订阅消息,该订阅消息中包括订阅第一任务的事件的标识以及第二任务的标识。第一任务判断该订阅消息是否满足订阅条件,若满足订阅条件则将该订阅消息存储在订阅链表中。第一任务可以将订阅结果发送至第二任务的消息队列。
其中,每个事件都有独立的订阅条件。订阅条件主要是订阅权限。订阅权限是指第一任务可以设定订阅第一任务的某一个事件的权限,可以允许或禁止某一任务订阅第一任务的某一个事件。
其中,订阅结果包括订阅成功或订阅失败。
在本发明实施例中,事件通知消息包括以下的任意一项:
(1)事件的标识;
(2)事件的标识以及事件对应的数据值;
(3)事件的标识以及事件对应的数据值的地址信息;
(4)事件的标识、事件对应的数据值以及数据值的地址信息。
在本发明实施例中,一个事件通知消息通常对应一个事件。若第一任务的多个事件的状态发生变化,例如两个事件的状态发生变化,分别为事件1和事件2,则第一任务分别生成事件1对应的事件通知消息以及事件2对应的事件通知消息。
事件通知消息至少需要包括事件的标识,事件的标识可唯一确定一个事件。可选的,事件通知消息还可以包括信息数据,信息数据即上述的数据值和/或数据值的地址信息。具体的,事件通知消息中的数据值为更新后的数据值,数据值的地址信息为更新后的地址信息。
示例性的,第一任务可以在发送事件标识的同时,发送该事件对应的数据值,例如温度检测事件,当温度超过预设温度值时,发送事件通知消息,该消息中包括温度检测事件的标识以及当前的温度值。第一任务还可以在发送事件标识的同时,发送该事件对应的数据值的地址信息,订阅该事件的任务可以通过数据值的地址信息获取该事件对应的数据值。当然,第一任务还可以在发送事件标识的同时,发送该事件对应的数据值以及该数据值对应的地址信息。对此本发明实施例不作任何限制。
再例如,事件通知消息对应图像监控事件,当车载终端上的摄像机获取到的图像中包括预先设定的图像数据时,发送事件通知消息,该消息中可以包括以下信息中的至少一项:1、环境标识,该标识用于指示车辆当前的行驶环境,比如等待红绿灯、极端天气、路面存在障碍物,路面有爆炸、燃烧、暴力拆卸等事件;2、根据摄像头所获取图像数据确定的车辆与障碍物之间距离值,当该距离值小于预设距离值时,车载终端可发出预警或控制车辆减速、刹车,避免碰撞;3、车辆当前速度,利用摄像机获取到的图像数据计算车辆当前的相对速度,若当前速度过高,车载终端可发出预警或控制车辆减速、刹车,避免危险驾驶。获取通知消息的其他任务,可以将上述信息传至云端,用于汽车保险等。
可选的,在一些实施例中,第一任务向订阅第一事件的其他任务发送事件通知消息之前,会检测订阅第一事件的其他任务是否存在,若存在则发送事件通知消息,若不存在则不发送。
可选的,在一些实施例中,第一任务向订阅第一任务的第一事件的任务发布事件通知消息之后,还包括:第一任务接收订阅第一事件的其他任务返回的响应消息,响应消息用于指示已成功接收事件通知消息,或者,指示已完成针对第一事件发生变化的相应操作。若在预设时间段内没有收到其他任务返回的响应消息,第一任务可重发上述事件通知消息,确保事件通知消息被其他任务成功接收。
步骤103、第二任务根据事件通知消息,确定第二任务订阅的第一任务中的至少一个事件的状态发生变化。
作为一种示例,假设第二任务订阅的第一任务中的至少一个事件的状态发生变化包括:第一任务中的第一事件的状态发生变化。第二任务根据事件通知消息,确定第二任务订阅的第一任务中的第一事件的状态发生变化之后,还可以包括如下步骤:第二任务根据事件通知消息,调用回调链表中的第一事件对应的回调处理函数;执行回调处理函数,完成相应的操作。例如,第一任务中的第一事件为车内高温报警事件,当该第一事件发生后,订阅车内高温报警事件的其他任务(比如第二任务)在接收到事件通知消息后,应执行相应的报警操作,例如启动车载报警器,向车载显示器发送提示信息等。
具体的,第二任务从第二任务的消息队列中获取第一任务发送的事件通知消息,通过查询回调链表,获取第一事件对应的回调函数,执行该回调函数。其中,回调链表用于存储第二任务订阅的事件对应的回调函数。
示例性的,第二任务向第一任务发送订阅消息,该订阅消息用于订阅第一任务中的第一事件。第二任务向第一任务发送订阅消息之后,从第二任务的消息队列中获取第一任务返回的订阅结果。若订阅结果为订阅成功,则第二任务将订阅的第一事件对应的回调函数存储至第二任务的回调链表中,以便第二任务在接收到第一任务发送的第一事件对应的事件通知消息后,执行相应的操作。若订阅结果为订阅失败,并且失败的原因是第一任务的第一事件不存在,则第二任务将订阅消息存储在预订阅中,当第二任务在获知第一任务的第一事件创建后,再次发送该订阅消息,若为其他原因失败,则不操作。
需要说明的是,订阅失败主要是由于创建事件和订阅事件之间存在时间差,同一时间只能执行一个任务,例如第二任务订阅第一任务的事件1,第一任务接收到订阅事件时,事件1还没有创建成功,此时第一任务向第二任务发送订阅失败。
可选的,在一些实施例中,终端设备的第二任务在接收到第一任务发送的事件通知消息之后,可执行内存清理机制。作为一种示例,事件通知消息用于指示第一任务中的第一事件被删除,则第二任务根据该事件通知消息,将订阅的第一事件相关的数据信息从内存中清除,释放无用的资源,提升终端设备的处理性能。
上述事件处理方法的所有操作都在对应的任务中执行,不会占用其他任务的内存资源,保证了线程安全。删除任务后,各个任务分别清理内存资源,防止阻塞等待的任务无法执行。
本发明实施例提供的事件处理方法,应用于终端设备,该终端设备包括第一任务,该方法包括:第一任务确定第一任务的至少一个事件的状态发生变化,第一任务向订阅第一任务的至少一个事件的任务发布事件通知消息,事件通知消息用于指示至少一个事件的状态发生变化,其中事件状态发生变化包括事件对应的数据值发生变化、数据存储地址发生变化、事件被删除的至少一项。接收到上述事件通知消息的任务可根据事件通知消息执行相应的操作。通过上述处理方法可实现对任务或事件的实时监控与通知,提升用户在终端设备上的订阅体验。
图5为本发明实施例提供的一种事件处理方法的流程示意图。在上述实施例的基础上,如图5所示,本发明实施例提供的方法包括如下步骤:
步骤201、第一任务接收事件状态判断更新消息,事件状态判断更新消息用于指示第一任务中的第一事件对应的状态更新函数发生变化。
作为一种示例,事件状态判断更新消息包括第一事件的标识和判断数据的标识。具体的,用户可通过第二任务或者第一任务自身修改第一任务中第一事件对应的状态更新函数,例如将状态更新函数的自变量a变成自变量b,使得判断第一事件的判断条件发生变化,上述判断数据的标识包括本实例中自变量b的标识。
可选的,事件状态判断更新消息还包括判断数据的数据值,例如修改状态更新函数中的预设阈值c的数值大小。
步骤202、第一任务根据事件状态判断更新消息,确定第一任务的第一事件的状态是否发生变化。
在本发明实施例中,第一任务根据事件状态判断更新消息中的第一事件的标识,获取第一事件对应的状态更新函数。第一任务再根据事件状态判断更新消息中的判断数据的标识,修改第一事件对应的状态更新函数中的判定数据,得到修改后的状态更新函数。第一任务根据修改后的状态更新函数,确定第一任务的第一事件的状态是否发生变化。
步骤203、若第一任务的第一事件的状态发送变化,第一任务向订阅第一任务的第一事件的任务发布事件通知消息。
本步骤与上述实施例的步骤102类似,具体可参见上文,此处不再赘述。
本发明实施例提供的事件处理方法涉及对终端设备中某一任务中的任意一个事件的状态判断条件的调整与更新。第一任务接收其他任务发送的事件状态判断更新消息,该消息用于指示第一任务中第一事件对应的状态更新函数发生变化,第一任务根据接收到的事件状态更新消息修改第一任务中第一事件对应的状态更新函数,并基于修改后的状态更新函数确定第一任务中第一事件的状态是否发生变化。上述处理过程可实现对任务或事件对应的状态判断条件的实时更新,满足不同用户的个性化订阅需求。
图6为本发明实施例提供的一种终端设备的结构示意图,如图6所示,本发明实施例提供的终端设备300,包括:
处理模块301,用于确定第一任务的至少一个事件的状态发生变化;
发送模块302,用于向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,所述事件通知消息用于指示所述至少一个事件的状态发生变化。
可选的,所述处理模块301,具体用于:
通过轮询遍历事件链表中的不同事件对应的状态更新函数,确定所述第一任务的至少一个事件的状态发生变化。
可选的,所述处理模块301,具体用于:
若所述第一任务的第一事件对应的状态更新函数的执行结果为第一执行结果,确定所述第一任务的第一事件的状态发生变化。
所述发送模块302,具体用于:
采用消息队列向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息。
可选的,所述第一任务的至少一个事件的状态发生变化包括以下的至少一项:
所述第一任务的至少一个事件的数据值发生变化;
所述第一任务的至少一个事件的数据存储地址发生变化;
所述第一任务的至少一个事件被删除。
可选的,所述事件通知消息包括以下的任意一项:
事件的标识;
所述事件的标识以及所述事件对应的数据值;
所述事件的标识以及所述事件对应的数据值的地址信息;
所述事件的标识、所述事件对应的数据值以及所述数据值的地址信息。
可选的,订阅所述第一任务的至少一个事件包括订阅所述第一任务的第一事件;相应的,订阅所述第一任务的第一事件的任务包括:所述第一任务,除所述第一任务之外的其他任务的至少一项。
可选的,终端设备300,还包括:接收模块303。
接收模块303,用于接收事件状态判断更新消息,所述事件状态判断更新消息用于指示所述第一任务中的第一事件对应的状态更新函数发生变化;
处理模块301,具体用于根据所述事件状态判断更新消息,确定所述第一任务的第一事件的状态是否发生变化。
可选的,所述事件状态判断更新消息包括所述第一事件的标识和判定数据的标识;
处理模块301,具体用于:
根据所述第一事件的标识,获取所述第一事件对应的状态更新函数;
根据所述判定数据的标识,修改所述第一事件对应的状态更新函数中的判定数据,得到修改后的状态更新函数;
根据所述修改后的状态更新函数,确定所述第一任务的第一事件的状态是否发生变化。
本实施例提供的终端设备,可以执行上述任一方法实施例中第一任务执行的各个步骤,其实现原理和技术效果类似,此处不再赘述。
图7为本发明实施例提供的一种终端设备的硬件结构示意图。如图7所示,本发明实施例的提供的终端设备400,包括:
存储器401,处理器402以及计算机程序;
其中,计算机程序存储在存储器401中,并被配置为由处理器402执行以实现上述任一方法实施例中第一任务的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,存储器401既可以是独立的,也可以跟处理器402集成在一起。
当存储器401是独立于处理器402之外的器件时,终端设备400还包括:总线403,用于连接存储器401和处理器402。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器402执行以实现如上任一方法实施例中第一任务所执行的各个步骤。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例中方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于终端设备中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例的技术方案的范围。
Claims (11)
1.一种事件处理方法,其特征在于,应用于终端设备,所述终端设备中包括第一任务,所述方法包括:
所述第一任务确定所述第一任务的至少一个事件的状态发生变化;
所述第一任务向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,所述事件通知消息用于指示所述至少一个事件的状态发生变化。
2.根据权利要求1所述的方法,其特征在于,所述第一任务确定所述第一任务的至少一个事件的状态发生变化,包括:
所述第一任务通过轮询遍历事件链表中的不同事件对应的状态更新函数,确定所述第一任务的至少一个事件的状态发生变化。
3.根据权利要求2所述的方法,其特征在于,所述第一任务通过轮询遍历事件链表中的不同事件对应的状态更新函数,确定所述第一任务的至少一个事件的状态发生变化,包括:
若所述第一任务的第一事件对应的状态更新函数的执行结果为第一执行结果,确定所述第一任务的第一事件的状态发生变化。
4.根据权利要求1所述的方法,其特征在于,所述第一任务向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,包括:
所述第一任务采用消息队列向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述第一任务的至少一个事件的状态发生变化包括以下的至少一项:
所述第一任务的至少一个事件的数据值发生变化;
所述第一任务的至少一个事件的数据存储地址发生变化;
所述第一任务的至少一个事件被删除。
6.根据权利要求1-4中任一项所述的方法,其特征在于,所述事件通知消息包括以下的任意一项:
事件的标识;
所述事件的标识以及所述事件对应的数据值;
所述事件的标识以及所述事件对应的数据值的地址信息;
所述事件的标识、所述事件对应的数据值以及所述数据值的地址信息。
7.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
所述第一任务接收事件状态判断更新消息,所述事件状态判断更新消息用于指示所述第一任务中的第一事件对应的状态更新函数发生变化;
所述第一任务根据所述事件状态判断更新消息,确定所述第一任务的第一事件的状态是否发生变化。
8.根据权利要求7所述的方法,其特征在于,所述事件状态判断更新消息包括所述第一事件的标识和判定数据的标识;
所述第一任务根据所述事件状态判断更新消息,确定所述第一任务的第一事件的状态是否发生变化,包括:所述第一任务根据所述第一事件的标识,获取所述第一事件对应的状态更新函数;
所述第一任务根据所述判定数据的标识,修改所述第一事件对应的状态更新函数中的判定数据,得到修改后的状态更新函数;
所述第一任务根据所述修改后的状态更新函数,确定所述第一任务的第一事件的状态是否发生变化。
9.一种终端设备,其特征在于,包括:
处理模块,用于确定第一任务的至少一个事件的状态发生变化;
发送模块,用于向订阅所述第一任务的所述至少一个事件的任务发布事件通知消息,所述事件通知消息用于指示所述至少一个事件的状态发生变化。
10.一种终端设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1至8中任一项所述的事件处理方法。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1至8中任一项所述的事件处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010279790.7A CN111475263A (zh) | 2020-04-10 | 2020-04-10 | 事件处理方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010279790.7A CN111475263A (zh) | 2020-04-10 | 2020-04-10 | 事件处理方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111475263A true CN111475263A (zh) | 2020-07-31 |
Family
ID=71751751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010279790.7A Pending CN111475263A (zh) | 2020-04-10 | 2020-04-10 | 事件处理方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475263A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112333233A (zh) * | 2020-09-23 | 2021-02-05 | 北京达佳互联信息技术有限公司 | 事件信息的上报方法、装置、电子设备及存储介质 |
CN113302614A (zh) * | 2021-04-25 | 2021-08-24 | 华为技术有限公司 | 数据管理方法、装置和终端设备 |
CN113452793A (zh) * | 2021-06-30 | 2021-09-28 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
CN113721498A (zh) * | 2021-07-15 | 2021-11-30 | 青岛英泰信息技术有限公司 | 一种基于FreeRTOS的指令交互控制系统及其方法 |
CN113452793B (zh) * | 2021-06-30 | 2024-05-14 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729161A (zh) * | 2017-09-28 | 2018-02-23 | 平安普惠企业管理有限公司 | 信息通知方法、系统、设备及计算机可读存储介质 |
CN109032534A (zh) * | 2018-08-30 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 一种消息传输方法、装置、设备和介质 |
WO2019016389A1 (en) * | 2017-07-21 | 2019-01-24 | Nokia Solutions And Networks Oy | CONTROLLING THE USE OF RESOURCES IN A COMMUNICATION SYSTEM |
CN109542892A (zh) * | 2018-10-19 | 2019-03-29 | 北京全路通信信号研究设计院集团有限公司 | 一种实时数据库的关系化实现方法、装置及系统 |
CN109861741A (zh) * | 2019-01-29 | 2019-06-07 | 深圳市赛为智能股份有限公司 | 系留无人机数据分发方法、装置、计算机设备及存储介质 |
-
2020
- 2020-04-10 CN CN202010279790.7A patent/CN111475263A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019016389A1 (en) * | 2017-07-21 | 2019-01-24 | Nokia Solutions And Networks Oy | CONTROLLING THE USE OF RESOURCES IN A COMMUNICATION SYSTEM |
CN107729161A (zh) * | 2017-09-28 | 2018-02-23 | 平安普惠企业管理有限公司 | 信息通知方法、系统、设备及计算机可读存储介质 |
CN109032534A (zh) * | 2018-08-30 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 一种消息传输方法、装置、设备和介质 |
CN109542892A (zh) * | 2018-10-19 | 2019-03-29 | 北京全路通信信号研究设计院集团有限公司 | 一种实时数据库的关系化实现方法、装置及系统 |
CN109861741A (zh) * | 2019-01-29 | 2019-06-07 | 深圳市赛为智能股份有限公司 | 系留无人机数据分发方法、装置、计算机设备及存储介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112333233A (zh) * | 2020-09-23 | 2021-02-05 | 北京达佳互联信息技术有限公司 | 事件信息的上报方法、装置、电子设备及存储介质 |
CN112333233B (zh) * | 2020-09-23 | 2023-11-24 | 北京达佳互联信息技术有限公司 | 事件信息的上报方法、装置、电子设备及存储介质 |
CN113302614A (zh) * | 2021-04-25 | 2021-08-24 | 华为技术有限公司 | 数据管理方法、装置和终端设备 |
CN113302614B (zh) * | 2021-04-25 | 2023-02-03 | 华为技术有限公司 | 数据管理方法、装置和终端设备 |
CN113452793A (zh) * | 2021-06-30 | 2021-09-28 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
CN113452793B (zh) * | 2021-06-30 | 2024-05-14 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
CN113721498A (zh) * | 2021-07-15 | 2021-11-30 | 青岛英泰信息技术有限公司 | 一种基于FreeRTOS的指令交互控制系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475263A (zh) | 事件处理方法、设备及存储介质 | |
US10225206B2 (en) | Cloud-based dynamic IOT resource allocation in response to a changing sensor status | |
US6629033B2 (en) | Open communication system for real-time multiprocessor applications | |
US9336043B2 (en) | Method and apparatus for a task priority processing system | |
CN101268447B (zh) | 一种具有进程监控功能的计算机 | |
JP7075967B2 (ja) | 管理サーバ、通信機器、管理者端末、通信方法 | |
CN109150662B (zh) | 消息传输方法、分布式系统、设备、介质和无人车 | |
US11709620B2 (en) | Methods and systems for memory management in a publish and subscribe system | |
US11768721B2 (en) | Processing device | |
EP3489777B1 (en) | Control device, control method, and program | |
US11363099B2 (en) | Methods and systems for enabling publish-subscribe message transmission in a distributed environment | |
JP2020086522A (ja) | 車載システム | |
CN113867145A (zh) | 一种应用控制方法、装置、电子设备及存储介质 | |
US11429290B2 (en) | Methods and systems for providing a lockless access to a shared memory region in a publish and subscribe system | |
CN111886588B (zh) | 处理装置 | |
WO2023223819A1 (ja) | 情報処理方法、通信システムおよび情報処理プログラム | |
WO2022103708A1 (en) | Methods and systems for providing a lockless access to a shared memory region in a publish and subscribe system | |
US20240101054A1 (en) | In-vehicle device and method for starting the same | |
CN116909830A (zh) | 一种车载系统监控方法、装置、车辆及服务端 | |
CN117354115A (zh) | 设备管理方法、设备、设备管理系统和存储介质 | |
CN115129536A (zh) | 动态监测 | |
CN116450380A (zh) | 一种消息处理方法、电子设备及计算机可读存储介质 | |
CN117475530A (zh) | 一种车辆诊断方法、系统及设备 | |
CN117909269A (zh) | 网络控制方法、系统、装置、设备及存储介质 | |
CN112631297A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200731 |