线程消息处理方法及相关产品技术

技术编号:27877433 阅读:13 留言:0更新日期:2021-03-31 00:58
本申请实施例公开了一种线程消息处理方法及相关产品,方法包括:获取就绪线程队列中当前需要处理的第一消息订阅者线程;检测多个消息总线中是否存在第一消息订阅者线程的消息;若是,则调用第一消息订阅者线程读取检测到的消息;若否,则移除就绪队列中的第一消息订阅者线程,并在多个等待线程队列的每个等待线程队列插入第一消息订阅者线程。本申请实施例支持订阅线程同时订阅多个消息总线。

【技术实现步骤摘要】
线程消息处理方法及相关产品
本申请涉及内核通信
,具体涉及一种线程消息处理方法及相关产品。
技术介绍
在片上系统(SystemonChip,SOC)上运行实时多任务操作系统(RealTimeOperatingSystem,RTOS)时,应用的各个线程任务都有通信的需求,由于SOC的可用资源有限,例如计算能力、存储均会受到严格限制,一般直接使用内核提供的消息队列来实现线程的消息读取。
技术实现思路
本申请实施例提供了一种线程消息处理方法及相关产品,可以支持订阅线程同时订阅多个消息总线。第一方面,本申请实施例提供了一种线程消息处理方法,应用于电子设备,所述电子设备包括第一消息订阅者线程订阅的多个主题的多个消息总线、就绪线程队列以及与所述多个消息总线一一对应的多个等待线程队列,所述方法包括:获取所述就绪线程队列中当前需要处理的所述第一消息订阅者线程;检测所述多个消息总线中是否存在所述第一消息订阅者线程的消息;若是,则调用所述第一消息订阅者线程读取检测到的消息;若否,则移除所述就绪队列中的所述第一消息订阅者线程,并在所述多个等待线程队列的每个等待线程队列插入所述第一消息订阅者线程。第二方面,本申请实施例提供了一种线程消息处理装置,应用于电子设备,所述电子设备包括第一消息订阅者线程订阅的多个主题的多个消息总线、就绪线程队列以及与所述多个消息总线一一对应的多个等待线程队列,所述装置包括处理单元和通信单元,其中,所述处理单元,用于通过所述通信单元获取就绪线程队列中当前需要处理的第一消息订阅者线程;以及用于检测所述多个消息总线中是否存在所述第一消息订阅者线程的消息;若是,则调用所述第一消息订阅者线程读取检测到的消息;若否,则移除所述就绪队列中的所述第一消息订阅者线程,并在所述多个等待线程队列的每个等待线程队列插入所述第一消息订阅者线程。第三方面,本申请实施例提供了一种电子设备,包括:处理器,存储器,以及一个或多个程序;所述一个或多个程序被存储在上述存储器中,并且被配置成由所述处理器执行,所述程序包括用于执行本申请实施例第一方面任一方法中所描述的步骤的指令。第四方面,本申请实施例提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储有用于电子数据交换的计算机程序,该计算机程序具体包括指令,所述指令用于执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。可以看出,本申请实施例中,电子设备包括第一消息订阅者线程订阅的多个主题的多个消息总线、就绪线程队列以及与多个消息总线一一对应的多个等待线程队列,在该消息总线架构下,电子设备首先获取就绪线程队列中当前需要处理的第一消息订阅者线程,其次,检测多个消息总线中是否存在第一消息订阅者线程的消息;若是,则调用第一消息订阅者线程读取检测到的消息;若否,则移除就绪队列中的第一消息订阅者线程,并在多个等待线程队列的每个等待线程队列插入第一消息订阅者线程。可见,由于就绪线程队列中的线程在无消息可收取状态下会被及时移除,并转入等待线程队列,从而避免因为一个消息总线的空闲阻塞其它消息总线的消息处理,保证任意一个消息总线上插入第一消息订阅者线程的消息均能够被及时查收,实现同时订阅多个FFFO首次匹配首次出来类型的消息总线,提高多主题订阅场景中线程消息传输的连续性和稳定性。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1A是本申请实施例公开的一种消息队列的示意图;图1B是本申请实施例公开的一种消息总线的示意图;图1C是本申请实施例公开的一种基于FFFO的消息总线的架构示意图;图2A是本申请实施例公开的一种线程任务通信系统的示意图;图2B是本申请实施例公开的一种支持多主题的消息总线的架构示意图;图2C是本申请实施例公开的一种支持多主题的消息总线的消息处理示意图;图3是本申请实施例公开的一种线程消息处理方法的流程示意图;图4是本申请实施例公开的一种电子设备的结构示意图;图5是本申请实施例公开的一种线程消息处理装置的功能单元组成框图。具体实施方式为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备(例如智能手表、智能手环、计步器等)、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(UserEquipment,UE),移动台(MobileStation,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为电子设备。下面对本申请实施例进行详细介绍。电子设备上运行的RTOS所支持的消息队列一般有两种使用方式:消息队列与消息总线。图1A是消息队列的示意图,一个消息队列从一个应用接收消息,然后一个或多个其它应用可从该消息队列中以首次进入首次出来(FirstInFirstOut,FIFO)方式读取消息。在很多架构场景中,如果应用A需要发送消息给应用B和C,系统会为B和C各自创建一个消息队列。A会往这些消息队列里发送消息来实现与B和C通信目的。当A发送消息时,B和C可以做其它事情,无需实时接收。这种架构的最大特点是消息队列与线程任务是一一映射的关系。图1B是消息总线的示意图:消息总线也提供了一种机制用于线程任务间的通信,采用的是发布/订阅设计模式。消息订阅线程无需知道具体的消息发布线程,只要总线上有数据,订阅线程就可以获取消息,而且消息总线不会保证订阅者以FIFO的顺序去读取。对于消息队列,扩展性比较差,当系统新增线程任务时,也需要相应增加消息队列,而且往新增消本文档来自技高网
...

【技术保护点】
1.一种线程消息处理方法,其特征在于,应用于电子设备,所述电子设备包括第一消息订阅者线程订阅的多个主题的多个消息总线、就绪线程队列以及与所述多个消息总线一一对应的多个等待线程队列,所述方法包括:/n获取所述就绪线程队列中当前需要处理的所述第一消息订阅者线程;/n检测所述多个消息总线中是否存在所述第一消息订阅者线程的消息;/n若是,则调用所述第一消息订阅者线程读取检测到的消息;/n若否,则移除所述就绪队列中的所述第一消息订阅者线程,并在所述多个等待线程队列的每个等待线程队列插入所述第一消息订阅者线程。/n

【技术特征摘要】
1.一种线程消息处理方法,其特征在于,应用于电子设备,所述电子设备包括第一消息订阅者线程订阅的多个主题的多个消息总线、就绪线程队列以及与所述多个消息总线一一对应的多个等待线程队列,所述方法包括:
获取所述就绪线程队列中当前需要处理的所述第一消息订阅者线程;
检测所述多个消息总线中是否存在所述第一消息订阅者线程的消息;
若是,则调用所述第一消息订阅者线程读取检测到的消息;
若否,则移除所述就绪队列中的所述第一消息订阅者线程,并在所述多个等待线程队列的每个等待线程队列插入所述第一消息订阅者线程。


2.根据权利要求1所述的方法,其特征在于,所述检测所述多个消息总线中是否存在所述第一消息订阅者线程的消息,包括:
遍历所述多个消息总线中的每个消息总线,确定是否存在所述第一消息订阅者线程的消息。


3.根据权利要求2所述的方法,其特征在于,所述调用所述第一消息订阅者线程读取检测到的消息,包括:
确定通过遍历查询到的所述第一消息订阅者线程的未读取的所有消息;
调用所述第一消息订阅者线程读取所述所有消息。


4.根据权利要求1所述的方法,其特征在于,所述检测所述多个消息总线中是否存在所述第一消息订阅者线程的消息,包括:
获取所述第一消息订阅者线程订阅的所述多个主题的多个消息链表,所述多个主题与所述多个消息链表一一对应,消息链表用于存储对应的主题的消息总线中插入的所述第一消息订阅者线程的未被读取的消息;
检测所述多个消息链表中是否存在所述第一消息订阅者线程的消息。


5.根据权利要求4所述的方法,其特征在于,所述调用所述第一消息订阅者线程读取检测到的消息,包括:
获取检测到的消息所属的目标消息链表;
读取所述目标消息链表中的所有消息。


6.根据权利要求1-5任一项所述的方法,其特征在于,所述获取所述就绪线程队列中当前需要处理的第一消息订阅者线程之前,所述方法还包括:
接收发布者发布的所述第一消息订阅者线程的消息;
在所述消息对应的消息总线中插入所述消息;
移除所述多个等待线程队列中的所述第一消息订阅者线程...

【专利技术属性】
技术研发人员:周峰方攀陈岩
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1