CN116107773A - 一种事件处理方法、装置和电子设备 - Google Patents

一种事件处理方法、装置和电子设备 Download PDF

Info

Publication number
CN116107773A
CN116107773A CN202211695917.9A CN202211695917A CN116107773A CN 116107773 A CN116107773 A CN 116107773A CN 202211695917 A CN202211695917 A CN 202211695917A CN 116107773 A CN116107773 A CN 116107773A
Authority
CN
China
Prior art keywords
event
thread
target
sending
waiting
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
Application number
CN202211695917.9A
Other languages
English (en)
Inventor
董乾钦
王森
姚杰
刘志勇
王浩
张菊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Supcon Technology Co Ltd
Original Assignee
Zhejiang Supcon Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Supcon Technology Co Ltd filed Critical Zhejiang Supcon Technology Co Ltd
Priority to CN202211695917.9A priority Critical patent/CN116107773A/zh
Publication of CN116107773A publication Critical patent/CN116107773A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Selective Calling Equipment (AREA)

Abstract

本申请提供了一种事件处理方法、装置和电子设备,应用于实时操作系统,所述方法包括:控制发送线程触发目标事件对象的发送事件;更新预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。

Description

一种事件处理方法、装置和电子设备
技术领域
本申请涉及信息技术领域,更具体的说,是涉及一种事件处理方法、装置和电子设备。
背景技术
一般的,在实时操作系统中,事件使用(32/64)位整形数据存储(32/64)种事件状态,当某种事件被发送线程触发时,该事件所对应的比特位将会被置位,接收线程可以等待多个事件或等待多个事件中任意一个事件,当事件触发者检测到被置位的事件满足某个接收线程的条件则将其唤醒,接收线程被唤醒后继续运行。若等待线程设置了清除标记,则等待事件满足后将会清除等待的事件对应的比特位。
由于其同时存储了多个事件的状态,且不会自动消除,导致能够存储的事件个数有限。
发明内容
有鉴于此,本申请提供了一种事件处理方法,如下:
一种事件处理方法,应用于实时操作系统,所述方法包括:
控制发送线程触发目标事件对象的发送事件;
更新预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。
可选的,上述的方法,控制发送线程触发目标事件对象的发送事件之前,还包括:
控制第一线程触发目标事件对象的第一等待事件;
控制线程调度器将所述第一线程添加至目标等待队列。
可选的,上述的方法,控制发送线程触发目标事件对象的发送事件之后,还包括:
确定目标等待队列中存在目标线程,所述目标线程对于目标事件对象触发等待事件;
将所述目标线程转移至目标就绪队列,以触发所述目标线程和所述发送线程调用相应接口执行线程调度。
可选的,上述的方法,控制发送线程触发目标事件对象的发送事件之后,还包括:
控制第二线程触发目标事件对象的第二等待事件;
基于预设事件变量的值与所述第二等待事件对应,确定当前触发的发送事件是与所述第二线程的第二等待事件对应;
控制所述第二线程和所述发送线程调用相应接口执行线程调度。
可选的,上述的方法,确定目标等待队列中是否存在目标线程,包括:
确定目标等待队列中每个线程对应的事件对象;
基于所述目标事件对象以及每个线程对应的事件对象,确定所述目标等待队列中与所述目标事件对象对应的至少一个目标线程。
可选的,上述的方法,将所述目标线程转移至目标就绪队列,包括:
将所述目标线程唤醒;
从目标等待队列中删除所述目标线程;
控制线程调度器将所述目标线程添加至目标就绪队列。
可选的,上述的方法,所述控制发送线程触发目标事件对象的发送事件之前,还包括:
控制第三线程创建事件对象;
设置所述事件对象的预设事件变量为预设初始值。
可选的,上述的方法,还包括:
控制第四线程触发销毁所述事件对象的销毁事件;
在目标等待队列中确定所述事件对象对应的至少一个线程;
唤醒所述事件对象对应的至少一个线程,以使得所述至少一个线程能触发事件;
将所述预设事件变量设置预设初始值。
一种事件处理装置,应用于实时操作系统,所述装置包括:
触发模块,用于控制发送线程触发目标事件对象的发送事件;
更新模块,用于更新预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。
一种电子设备,包括:存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如上述任一项所述的事件处理方法的各步骤。
经由上述的技术方案可知,本申请提供了一种事件处理方法,在控制发送线程触发目标事件对象的发送事件时,更新该目标事件对象的预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。在等待事件和发送事件中,只有发送事件能够改变事件状态,本实施例中,针对目标事件对象,只有触发发送事件时,才更新该预设事件变量的值,相对于等待事件也占用一位,减少同一事件占用的数据类型位宽,增加了支持事件的个数。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请提供的一种事件处理方法实施例1的流程图;
图2是本申请提供的一种事件处理方法实施例1中事件示意图;
图3是本申请提供的一种事件处理方法实施例2的流程图;
图4是本申请提供的一种事件处理方法实施例2中事件示意图;
图5是本申请提供的一种事件处理方法实施例3的流程图;
图6是本申请提供的一种事件处理方法实施例4的流程图;
图7是本申请提供的一种事件处理方法实施例5的流程图;
图8是本申请提供的一种事件处理方法实施例5中事件示意图;
图9是本申请提供的一种事件处理方法实施例6的流程图;
图10是本申请提供的一种事件处理方法实施例7的流程图;
图11是本申请提供的一种事件处理装置实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请中的事件处理方法所应用的实时操作系统,具体可以是嵌入式实时操作系统。
该嵌入式实时操作系统是,当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的事件之内控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的用于控制、监视或者辅助操作机器和设备的装置。
线程同步:控制多个线程对竞争资源有序访问的机制。
事件:用于线程同步的一种机制,针对同一数据可以触发不同功能的事件,如创建、发送、等待处理以及销毁等。
其中,本申请中的发送事件是对于某事件对象执行发送功能的,其中,针对该事件对象还可以有其他的线程执行访问,在在发送之前需要访问等待,因此,将其他线程访问资源记为等待事件。
如图1所示的,为本申请提供的一种事件处理方法实施例1的流程图,该方法应用于实时操作系统,该方法包括以下步骤:
步骤S101:控制发送线程触发目标事件对象的发送事件;
其中,在实时操作系统中包括发送线程和其他线程,该其他线程是与发送线程实现不同功能的线程。
其中,该发送线程和其他线程是从嵌入式实时操作系统的线程池中获得的线程,对于该实时操作系统中的事件进行维护,该维护包括发送或者其他操作(如等待)。
其中,该目标事件对象是某一事件数据,针对该目标事件对象,可以进行多种维护操作,
具体的,该目标事件对象是事件对象集合中的一个,不同的发送线程能够针对不同的事件对象触发发送事件。
具体的,本实施例中,控制发送线程触发该目标事件对象的发送事件。
其中,该发送线程触发目标事件对象的发送事件,目的是对于该目标事件对象的数据通过调度接口转移到处理模块中进行响应。
其中,该处理模块可以是执行该实时操作系统的设备的处理器,如CPU(centralprocessing unit,中央处理器)等结构。
步骤S102:更新预设事件变量为目标值。
其中,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。
其中,该预设事件变量的取值是与该实时操作系统中触发的发送事件对应的目标事件对象相应的。
其中,在实时操作系统中,任一时刻事件仅有一种事件状态,在本实施例中,该事件状态是被发送线程触发的状态。
其中,在实时操作系统中,针对不同的目标事件对象采用数整型数值标识。
具体的,在发送线程触发目标事件对象的发送事件后,更新预设事件变量为目标值,该目标值是与触发了发送事件的目标事件对象对应的数值。
具体实施中,发送线程触发发送事件后,先对于该发送事件的参数进行检查,若该发送事件的参数满足设定条件,设置该发送事件对应的目标事件对象的值,基于该目标事件对象的值作为目标值执行该步骤S102。
其中,该预设事件变量的取值采用的是无符号整型数据,用于存储事件状态,一个事件触发后该数据记为该事件。
本实施例中,是以发送事件作为触发相应事件的条件,进行触发预设时间变量更新。
例如,触发事件m,则该预设事件变量的值为m,新的事件n到达后,该数据值即为n,事件m将被覆盖,不再存在,其中,m和n的取值是正整数。
需要说明的是,由于嵌入式实时操作系统中采用n个比特位记录事件类型,本实施例中,能够支持多达2n(n为用于记录事件使用的数据类型位宽,如32位长整型为32,64位长整型则为64)个事件;线程间任一时刻仅有一种状态,不会对其他事件产生影响。
其中,采用预设事件变量的值对于事件状态进行记录,由于该预设事件变量的值是与实时操作系统中触发的发送事件对应的,而本实施例的实时操作系统中,对于触发的事件对象是按照计数的数值进行排序,即对于触发发送事件的事件对象的个数一致,因此,针对顺序执行的多个事件对象,采用计数型的预设事件变量能够在触发某一事件对象的发送事件后,在后续对于其顺序执行的其他事件对象进行触发时,直接基于该预设事件变量的值可以确定能够顺序触发。
如图2所示的是事件示意图,其中,事件对象集至少包括事件对象abc,针对事件对象abc,有线程1、线程2和线程3分别维护。线程1触发对于该事件对象a的发送事件后,线程2能够触发对于事件对象b的发送事件,线程2触发对于事件对象b的发送事件后,线程3触发事件对象c的发送事件。
需要说明的是,在任意时刻仅有一种事件对象处于触发状态,对于先发生的事件信息无需进行清除操作,后续发生的事件会自动覆盖。
综上,本实施例提供的一种事件处理方法中,在控制发送线程触发目标事件对象的发送事件时,更新该目标事件对象的预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。在等待事件和发送事件中,只有发送事件能够改变事件状态,本实施例中,针对目标事件对象,只有触发发送事件时,才更新该预设事件变量的值,无需等待事件设置的清除标记,可以自动对于预设事件变量的值进行更新,增加了支持事件的个数。
如图3所示的,为本申请提供的一种事件处理方法实施例2的流程图,该方法包括以下步骤:
步骤S301:控制第一线程触发目标事件对象的第一等待事件;
其中,多个线程可以对于该目标事件对象的数据进行维护。
其中,本实施例中,在发送线程触发目标事件对象的发送事件之前,控制第一线程触发该目标事件对象的第一等待事件。
步骤S302:控制线程调度器将所述第一线程添加至目标等待队列;
其中,针对该嵌入式实时操作系统中,预设有等待队列,该等待队列中的是等待调用的线程。
其中,由于调用接口能够被多个线程调用,但是某一时刻,该调用接口只能被一个线程调用,因此,需要控制线程调度器将待调用的线程添加到等待队列中,以待调用。
一般的,触发等待事件的线程,需要发送事件与该等待事件的数据一致的发送线程触发。
例如,线程2触发等待事件m,将该线程2添加到目标等待队列中,线程3触发等待事件n,也将该线程3添加到目标等待队列中。
一般的,基于各个线程触发等待事件的时间先后,将该线程添加到该目标等待队列中。
如图4所示的是事件示意图,其中,事件部分针对事件对象有预设事件变量以及等待队列,线程部分中有线程ABC分别处理事件o、m和n,其中,线程A等待事件o,线程ABC分别挂载在相应节点上,各个线程挂到等待事件的等待队列上。其中,当某个等待事件一致的事件数据对应的发送事件触发,基于该发送事件对应的目标事件对象更新该预设事件变量。
其中,在嵌入式实时操作系统中,在线程触发等待事件时,将该线程挂到就绪队列上。
本实施例中,将该触发第一等待事件的第一线程从默认的就绪队列摘除,并挂到事件对象的等待队列中。
例如,线程2等待事件对象m,线程2从就绪列表上摘除并挂载在事件对象的等待队列上,线程2内部等待事件变量被设置为m;线程3等待事件对象n,线程3从就绪列表上摘除并挂载在事件对象的等待队列上,线程3内部等待事件变量被设置为n,其中,m和n的取值是正整数。
具体实施中,实时操作系统中,第一线程触发第一等待事件,线程调度器接收到第一线程等待该目标事件对象的第一等待事件,线程调度器将该第一线程添加到就绪队列中,本实施例中,该线程调度器将所述第一线程从目标就绪队列转移到目标等待队列,以等待发送线程触发所述第一等待对象的发送事件。
其中,线程调度器中预设有排序规则,该排序规则是按照时间顺序或者是优先级排序。
例如,针对不同的事件对象可以设定不同的优先级顺序,线程调度器在接收到线程后,确定该线程对应的事件对象,基于该事件对象的优先级,将该线程插入目标等待队列中,事件对象的优先级越高,插入的位置越靠近队列头部。
其中,若设置的优先级是时间顺序,即先来先到,按照时间先后顺序依次插入等待队列中。
具体实施中,第一线程触发第一等待事件,先对于该第一等待事件的参数进行检查,如果该参数不满足预设参数条件,结束流程,如果该参数满足预设参数条件,判断是否有相应的发送事件触发,如果没有相应的发送事件被触发,将该第一线程加入目标等待队列,并确定加入操作是否超时,如果超时的话,返回错误码,如果未超时,结束流程。
步骤S303:控制发送线程触发目标事件对象的发送事件;
步骤S304:更新预设事件变量为目标值。
其中,步骤S303-304与实施例1中的步骤S101-102一致,本实施例中不做赘述。
综上,本实施例提供的一种事件处理方法中,还包括:控制第一线程触发目标事件对象的第一等待事件;控制线程调度器将所述第一线程添加至目标等待队列。本实施例中,在发送事件触发之前,触发目标事件对象的等待事件,将该等待事件对应的第一线程添加到目标等待队列中,不更新该预设事件变量,保证针对同一目标事件对象,只有发送线程触发的发送事件后,才更新预设事件变量的值,增加了支持事件的个数。
如图5所示的,为本申请提供的一种事件处理方法实施例3的流程图,该方法包括以下步骤:
步骤S501:控制发送线程触发目标事件对象的发送事件;
步骤S502:更新预设事件变量为目标值;
其中,步骤S501-502与实施例1中的步骤S101-102一致,本实施例中不做赘述。
步骤S503:确定目标等待队列中存在目标线程;
其中,所述目标线程对于目标事件对象触发的等待事件。
其中,在发送线程触发目标事件对象的发送事件后,确定目标等待队列中是否存在目标线程。
其中,若目标等待队列中存储目标线程,表征在触发该发送事件之前,针对该目标事件对象,目标线程触发了等待事件,因此,该目标线程被挂在目标等待队列中。
具体的,可以通过对于目标等待队列进行遍历,得到其中是否有线程等待该目标事件对象对应的事件。
其中,该步骤S503包括如下步骤:
步骤S5031:确定目标等待队列中每个线程对应的事件对象;
其中,遍历目标等待队列中每个线程,确定每个线程内等待的事件对象。
例如,目标等待队列中有3个线程,其中,线程a对应事件对象1,线程b对应事件对象2,线程c对应事件对象1。
步骤S5032:基于所述目标事件对象以及每个线程对应的事件对象,确定所述目标等待队列中与所述目标事件对象对应的至少一个目标线程;
其中,基于该目标等待队列中每个线程对应的事件对象,与该发送线程对应的目标事件对象比对,确定该目标等待队列中与所述目标事件对象对应的至少一个目标线程。
其中,该目标等待队列中可以存在一个目标线程或者多个目标线程。
需要说明的是,由于在任意时刻仅有一种事件对象处于触发状态,因此,可以基于发送线程直接与目标等待队列中的等待的线程进行比较,查找目标等待队列中的等待事件所需时间较少。
步骤S504:将所述目标线程转移至目标就绪队列,以触发所述目标线程和所述发送线程调用相应接口执行线程调度。
其中,若有目标等待队列中存在目标线程,则将该目标等待队列中的目标线程转移至目标就绪队列。
其中,该目标就绪队列中的线程能够调用相应接口,以执行线程调度,通过相应接口将该目标事件对象的数据的传递给处理模块进行处理。
需要说明的是,当实时操作系统中,不同功能线程针对相同的事件对象触发不同功能,需要同步执行时,由于需要等待发送线程触发时,才将等待线程从目标等待队列中转移到目标就绪队列中,保证了同步线程能够同步执行。
综上,本实施例提供的一种事件处理方法中,还包括:确定目标等待队列中存在目标线程,所述目标线程对于目标事件对象触发等待事件;将所述目标线程转移至目标就绪队列,以触发所述目标线程和所述发送线程调用相应接口执行线程调度。本实施例中,在触发对于目标事件对象的发送事件后,确定目标等待队列中是否存在触发该目标事件对象的等待事件的目标线程,若存在目标线程,将该目标线程转移到目标就绪队列中,以触发目标线程和发送线程的同步执行,保证了对于同一目标事件对象的同步线程的同步执行。
如图6所示的,为本申请提供的一种事件处理方法实施例4的流程图,该方法包括以下步骤:
步骤S601:控制发送线程触发目标事件对象的发送事件;
步骤S602:更新预设事件变量为目标值;
步骤S603:确定目标等待队列中存在目标线程;
其中,步骤S601-603与实施例3中的步骤S501-503一致,本实施例中不做赘述。
步骤S604:将所述目标线程唤醒;
其中,为了实现将等待的目标线程与发送线程同步执行,在发送线程触发发送事件后,先将该目标线程唤醒,再将在目标等待队列中的目标线程从目标等待队列中转移到目标就绪队列。
其中,目标线程在目标等待队列中,该目标线程处于挂载,未被唤醒,为了使得该目标线程能够调度,需要将该目标线程唤醒。
具体的,对于该目标等待队列中的目标线程依次进行唤醒。
其中,由于目标等待队列的顺序是先入先出的顺序,因此,从靠近队头的线程开始唤醒。
具体的,由于目标等待队列中的线程下基于线程调度器的排序规则进行排序的,若设置的排序规则是时间顺序,即先来先到,线程调度器按照时间先后将各个目标线程顺序依次插入等待队列中,唤醒时从等待队列中的位置从前到后依次唤醒各个目标线程。
步骤S605:从目标等待队列中删除所述目标线程;
步骤S606:控制线程调度器将所述目标线程添加至目标就绪队列,以触发所述目标线程和所述发送线程调用相应接口执行线程调度。
其中,在将目标线程转移时,从目标等待队列中删除该目标线程,并且将该目标线程添加到目标就绪队列中。
需要说明的是,具体实施种,从目标等待队列中删除目标线程和将目标线程添加到目标就绪队列的先后顺序并不限制于本实施例中的顺序,可以同时执行,也可以任意一个操作在前。
需要说明的是,当实时操作系统中,不同功能线程针对相同的事件对象触发不同功能,需要按照一定顺序同步执行。本实施例中,由于等到发送线程触发时,才将等待线程从目标等待队列中转移到目标就绪队列中,由于线程调度器对于目标队列进行排序后添加到等待队列,则相应的在转移目到目标就绪队列中也是按照排序执行,保证了顺序执行的同步线程能够按照要求的顺序同步执行。
综上,本实施例提供的一种事件处理方法中,包括:将所述目标线程唤醒;从目标等待队列中删除所述目标线程;控制线程调度器将所述目标线程添加至目标就绪队列。本实施例中,在确定了与发送事件对应的目标事件对象相应的目标线程后,将该挂起的目标线程唤醒,从目标等待队列中删除,并添加到目标就绪队列中,以使得发送线程和唤醒的目标线程能够调用相应接口,实现将发送线程与目标等待队列中相对应的目标线程同步执行。
如图7所示的,为本申请提供的一种事件处理方法实施例5的流程图,该方法包括以下步骤:
步骤S701:控制发送线程触发目标事件对象的发送事件;
步骤S702:更新预设事件变量为目标值;
其中,步骤S701-702与实施例1中的步骤S101-102一致,本实施例中不做赘述。
步骤S703:控制第二线程触发目标事件对象的第二等待事件;
其中,在发送线程触发目标事件对象的发送事件后,在第二线程触发该目标事件对象的第二等待事件,则基于该第二等待事件以及之前的发送事件同步执行。
需要说明的是,由于发送事件更新预设事件变量,因此,发送线程触发目标事件对象的发送事件与第二线程触发目标事件对象的第二等待事件之间,无触发其他事件对象的发送线程。
若发送线程触发目标事件对象的发送事件与第二线程触发目标事件对象的第二等待事件之间有触发其他事件对象的发送线程,执行实施例2,本实施例中第二线程相当于实施例2中第一线程,本实施例中第二等待事件相当于实施例2中第一等待事件。
步骤S704:基于预设事件变量的值与所述第二等待事件对应,确定当前触发的发送事件是与所述第二线程的第二等待事件对应;
其中,每个触发目标事件对象的事件中均包含有与目标事件对象相对应的参数。
具体的,若触发的事件是发送事件,则基于该发送事件中的参数更新该预设事件变量的值为该参数值。
具体的,若触发的事件是等待事件,则触发了等待事件后,基于等待事件中的参数,与实时操作系统中当前的预设事件变量的值比对,若二者对应,则表示在触发本等待事件之前,已经触发了针对同一个事件对象的发送事件;若二者不同,则表示在触发本等待事件之前,未触发针对同一个事件对象的发送事件。
其中,若触发本等待事件之前,已经触发了针对同一个事件对象的发送事件,则基于预设事件变量的值与该第二等待事件中的参数确定对应,确定当前触发的发送事件是与该第二等待事件对应的发送事件。
需要说明的是,该第二线程可以表示一个或者几个线程。
步骤S705:控制所述第二线程和所述发送线程调用相应接口执行线程调度。
其中,由于实时操作系统中已经存在对于目标事件对象触发的发送线程,则在接收到第二线程对于目标事件对象触发的第二等待事件后,直接控制该第二线程和发送线程调用相应接口执行线程调度,无需将该第二等待事件对应的第二线程添加到目标等待队列中。
具体实施中,可以控制线程调度器将第二线程和发送线程添加到目标就绪队列中,以使得处于目标就绪队列中的第二线程和发送线程能够调用相应接口,以执行线程调度,通过相应接口将该目标事件对象的数据的传递给处理模块进行处理。
如图8所示的是事件示意图,其中,针对事件对象d,有线程4、线程5和线程6分别维护。线程4触发对于该事件对象d的发送事件后,线程5和线程6分别触发对于事件5的等待事件(或者事件)。
具体实施中,第二线程触发第二等待事件,先对于该第二等待事件的参数进行检查,如果该参数不满足预设参数条件,结束流程,如果该参数满足预设参数条件,判断是否有相应的发送事件触发,如果有相应的发送事件被触发,将第二线程和发送线程添加到目标就绪队列中调用相应接口,结束流程。
综上,本实施例提供的一种事件处理方法中,还包括:控制第二线程触发目标事件对象的第二等待事件;基于预设事件变量的值与所述第二等待事件对应,确定当前触发的发送事件是与所述第二线程的第二等待事件对应;控制所述第二线程和所述发送线程调用相应接口执行线程调度。本实施例中,在实时操作系统中已经存在对于目标事件对象触发的发送线程,在接收到第二线程对于目标事件对象触发的第二等待事件后,无需将该第二等待事件对应的第二线程添加到目标等待队列中,直接控制该第二线程和发送线程调用相应接口执行线程调度。
如图9所示的,为本申请提供的一种事件处理方法实施例6的流程图,该方法包括以下步骤:
步骤S901:控制第三线程创建事件对象;
其中,预先创建事件对象。
具体的,控制一线程执行创建事件对象的过程。
其中,在创建事件对象的过程中,确定一个存储空间,并对于该存储空间进行初始化,该存储空间用于对于该事件对象的数据进行存储。
其中,该事件对象中可以包含若干个后续步骤中涉及的目标事件对象。
步骤S902:设置所述事件对象的预设事件变量为预设初始值;
其中,创建事件对象后,设置该事件对象的预设事件变量为预设初始值。
具体的,该预设初始值可以是0。
其中,该事件对象是计数型的事件对象,任意发送线程触发一事件对象的发送事件,更新该预设事件变量的值,以计数型方式进行更新。
具体实施中,在创建事件对象时,还需要对于等待队列进行初始化以及对于事件对象的事件对象集初始化。
具体实施中,每触发一个对于事件对象的事件,事件对象集中的事件对象增加一个,为该事件对应的事件对象内部设置变量,该变量具体是按照计数型设置的。
步骤S903:控制发送线程触发目标事件对象的发送事件;
步骤S904:更新预设事件变量为目标值。
其中,步骤S903-904与实施例1中的步骤S101-102一致,本实施例中不做赘述。
综上,本实施例提供的一种事件处理方法中,还包括:控制第三线程创建事件对象;设置所述事件对象的预设事件变量为预设初始值。本实施例中,在创建事件对象时,设置该事件对象的预设事件变量为预设初始值,事件对象是计数型的事件对象,后续在发送线程触发目标事件对象的发送事件时,更新该预设事件变量的值,以计数型方式进行更新该预设事件变量,采用了数值表示事件类型,无需等待事件设置的清除标记,可以自动对于预设事件变量的值进行更新,增加了支持事件的个数。
如图10所示的,为本申请提供的一种事件处理方法实施例7的流程图,该方法包括以下步骤:
步骤S1001:控制发送线程触发目标事件对象的发送事件;
步骤S1002:更新预设事件变量为目标值;
其中,步骤S1001-1002与实施例1中的步骤S101-102一致,本实施例中不做赘述。
步骤S1003:控制第四线程触发销毁事件对象的销毁事件;
其中,若用户不再需要事件对象,可以销毁该事件对象。
具体的,控制一线程触发销毁该事件对象的销毁事件。
步骤S1004:在目标等待队列中确定所述事件对象对应的至少一个线程;
其中,确定目标等待队列中是否有该事件对象对应的线程。
其中,该事件对象的事件对象集中可以有一个或者多个事件对象。
其中,基于该事件对象集中的每个事件对象,确定该目标等待队列中是否有对应的线程。
具体的,若目标等待队列中有对应的线程,确定该对应的线程执行后续的步骤。
具体实施中,先基于该第四线程中的对象指针,确定其对应的事件对象,若确定该第四线程的对象指针不为空,重置该事件对象,删除事件对象集中全部的事件对象;若该对象指针为空,返回空指针错误。
步骤S1005:唤醒所述事件对象对应的至少一个线程,以使得所述至少一个线程能触发事件;
其中,线程在目标等待队列中时,该线程不能够触发调度,因此,在销毁事件对象时,需要将在目标等待队列中挂起的事件对象对应的线程唤醒,以使得该线程能够在后续继续触发其他事件以调用接口实现调度。
步骤S1006:将所述预设事件变量设置预设初始值。
其中,由于预设事件变量记录的是实时操作系统中事件状态,具体是与目标事件对象对应的,而该事件对象销毁,该预设事件变量的值也相应恢复设置为预设初始值。
其中,该预设初始值可以是0。
综上,本实施例提供的一种事件处理方法中,还包括:控制第四线程触发销毁所述事件对象的销毁事件;在目标等待队列中确定所述事件对象对应的至少一个线程;唤醒所述事件对象对应的至少一个线程,以使得所述至少一个线程能被触发;将所述预设事件变量设置预设初始值。本实施例中,能够对于事件对象进行销毁,释放不需要的事件对象所占存储空间。
与上述本申请提供的一种事件处理方法实施例相对应的,本申请还提供了应用该事件处理方法的装置实施例。
如图11所示的为本申请提供的一种事件处理装置实施例的结构示意图,该装置应用于实时操作系统,该装置包括以下结构:触发模块1101和更新模块1102;
其中,该触发模块1101,用于控制发送线程触发目标事件对象的发送事件;
其中,该更新模块1102,用于更新预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。
可选的,还包括:
第一控制模块,用于控制第一线程触发目标事件对象的第一等待事件;控制线程调度器将所述第一线程添加至目标等待队列。
可选的,还包括:
第一确定模块,用于确定目标等待队列中存在目标线程,所述目标线程对于目标事件对象触发等待事件;
转移模块,用于将所述目标线程转移至目标就绪队列,以触发所述目标线程和所述发送线程调用相应接口执行线程调度。
可选的,还包括,控制发送线程触发目标事件对象的发送事件之后,还包括:
第二控制模块,用于控制第二线程触发目标事件对象的第二等待事件;
第二确定模块,用于基于预设事件变量的值与所述第二等待事件对应,确定当前触发的发送事件是与所述第二线程的第二等待事件对应;
第三控制模块,用于控制所述第二线程和所述发送线程调用相应接口执行线程调度。
可选的,第一确定模块,包括:
第一确定单元,用于确定目标等待队列中每个线程对应的事件对象;
第二确定单元,用于基于所述目标事件对象以及每个线程对应的事件对象,确定所述目标等待队列中与所述目标事件对象对应的至少一个目标线程。
可选的,转移模块,包括:
唤醒单元,用于将所述目标线程唤醒;
删除单元,用于从目标等待队列中删除所述目标线程;
添加单元,用于控制线程调度器将所述目标线程添加至目标就绪队列。
可选的,还包括,所述控制发送线程触发目标事件对象的发送事件之前,还包括:
第四控制模块,用于控制第三线程创建事件对象;
第一设置模块,用于设置所述事件对象的预设事件变量为预设初始值。
可选的,还包括:
第五控制模块,用于控制第四线程触发销毁所述事件对象的销毁事件;
第三确定模块,用于在目标等待队列中确定所述事件对象对应的至少一个线程;
唤醒模块,用于唤醒所述事件对象对应的至少一个线程,以使得所述至少一个线程能触发事件;
第二设置模块,用于将所述预设事件变量设置预设初始值。
需要说明的是,本实施例中提供的一种事件处理装置中的各个部分的功能解释,请参考前述方法实施例中的解释,本实施例中不做赘述。
综上,本实施例提供了一种事件处理装置,在控制发送线程触发目标事件对象的发送事件时,更新该目标事件对象的预设事件变量为目标值,所述预设事件变量表征实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。在等待事件和发送事件中,只有发送事件能够改变事件状态,本实施例中,针对目标事件对象,只有触发发送事件时,才更新该预设事件变量的值,相对于等待事件也占用一位,减少同一事件占用的数据类型位宽,增加了支持事件的个数。
与上述本申请提供的一种事件处理方法实施例相对应的,本申请还提供了与该事件处理方法相应的电子设备以及可读存储介质。
其中,该电子设备,包括:存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如上述任一项所述的事件处理方法的各步骤。
具体该电子设备的实现事件处理方法,参考前述事件处理方法实施例即可。
其中,该可读存储介质,其上存储有计算机程序,所述计算机程序被处理器调用并执行,实现如权利要求上述任一项所述的事件处理方法的各步骤。
具体该可读存储介质存储的计算机程序执行实现事件处理方法,参考前述事件处理方法实施例即可。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所提供的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所提供的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种事件处理方法,其特征在于,应用于实时操作系统,所述方法包括:
控制发送线程触发目标事件对象的发送事件;
更新预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。
2.根据权利要求1所述的方法,其特征在于,控制发送线程触发目标事件对象的发送事件之前,还包括:
控制第一线程触发目标事件对象的第一等待事件;
控制线程调度器将所述第一线程添加至目标等待队列。
3.根据权利要求1所述的方法,其特征在于,控制发送线程触发目标事件对象的发送事件之后,还包括:
确定目标等待队列中存在目标线程,所述目标线程对于目标事件对象触发等待事件;
将所述目标线程转移至目标就绪队列,以触发所述目标线程和所述发送线程调用相应接口执行线程调度。
4.根据权利要求1所述的方法,其特征在于,控制发送线程触发目标事件对象的发送事件之后,还包括:
控制第二线程触发目标事件对象的第二等待事件;
基于预设事件变量的值与所述第二等待事件对应,确定当前触发的发送事件是与所述第二线程的第二等待事件对应;
控制所述第二线程和所述发送线程调用相应接口执行线程调度。
5.根据权利要求3所述的方法,其特征在于,确定目标等待队列中是否存在目标线程,包括:
确定目标等待队列中每个线程对应的事件对象;
基于所述目标事件对象以及每个线程对应的事件对象,确定所述目标等待队列中与所述目标事件对象对应的至少一个目标线程。
6.根据权利要求3所述的方法,其特征在于,将所述目标线程转移至目标就绪队列,包括:
将所述目标线程唤醒;
从目标等待队列中删除所述目标线程;
控制线程调度器将所述目标线程添加至目标就绪队列。
7.根据权利要求1所述的方法,其特征在于,所述控制发送线程触发目标事件对象的发送事件之前,还包括:
控制第三线程创建事件对象;
设置所述事件对象的预设事件变量为预设初始值。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:
控制第四线程触发销毁所述事件对象的销毁事件;
在目标等待队列中确定所述事件对象对应的至少一个线程;
唤醒所述事件对象对应的至少一个线程,以使得所述至少一个线程能触发事件;
将所述预设事件变量设置预设初始值。
9.一种事件处理装置,其特征在于,应用于实时操作系统,所述装置包括:
触发模块,用于控制发送线程触发目标事件对象的发送事件;
更新模块,用于更新预设事件变量为目标值,所述预设事件变量表征所述实时操作系统中的事件状态,所述目标值与所述发送事件对应的目标事件对象对应。
10.一种电子设备,其特征在于,包括:存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如上述权利要求1-8任一项所述的事件处理方法的各步骤。
CN202211695917.9A 2022-12-28 2022-12-28 一种事件处理方法、装置和电子设备 Pending CN116107773A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211695917.9A CN116107773A (zh) 2022-12-28 2022-12-28 一种事件处理方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211695917.9A CN116107773A (zh) 2022-12-28 2022-12-28 一种事件处理方法、装置和电子设备

Publications (1)

Publication Number Publication Date
CN116107773A true CN116107773A (zh) 2023-05-12

Family

ID=86266709

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211695917.9A Pending CN116107773A (zh) 2022-12-28 2022-12-28 一种事件处理方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN116107773A (zh)

Similar Documents

Publication Publication Date Title
US6668291B1 (en) Non-blocking concurrent queues with direct node access by threads
US6963882B1 (en) Method and apparatus for processing a list structure
CN100429625C (zh) 实时内部简易监视方法
JPH03126158A (ja) スケジユーリング方法及び装置
CN101884029A (zh) 具有锁定指示器的多线程处理器
JP2007193451A (ja) Nasシステム及びリモートコピー方法
JP2007286860A (ja) データ転送方法及び情報処理装置
EP2284703A2 (en) Scheduling of tasks in a parallel computer system according to defined policies
CN104272256A (zh) 任务处理装置
JP5652480B2 (ja) データベース更新通知方法
CN109144749B (zh) 一种使用处理器实现多处理器间通信的方法
JP2007128369A (ja) データ処理システムおよびプログラム
JP5250955B2 (ja) データ処理システムのバックアップ制御装置及びシステム
CN106874103B (zh) 心跳实现方法及装置
CN111290836A (zh) 虚拟机快照创建方法、装置、存储介质及计算机设备
JP7322161B2 (ja) 分散システムにおける非同期ストレージ管理
CN116089477B (zh) 分布式训练方法及系统
CN116107773A (zh) 一种事件处理方法、装置和电子设备
CN110413689B (zh) 一种内存数据库的多节点数据同步方法与装置
EP0309676A2 (en) Workstation controller with full screen write mode and partial screen write mode
US9811403B1 (en) Method, apparatus and system for performing matching operations in a computing system
WO2018188959A1 (en) Method and apparatus for managing events in a network that adopts event-driven programming framework
CN108874560B (zh) 进行通信的方法和通信设备
CN114816566B (zh) 一种指令搬移方法、系统、设备以及介质
JP2021043725A (ja) 計算システム、計算方法及びプログラム

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