CN110297722A - 线程任务通信方法及相关产品 - Google Patents
线程任务通信方法及相关产品 Download PDFInfo
- Publication number
- CN110297722A CN110297722A CN201910584060.5A CN201910584060A CN110297722A CN 110297722 A CN110297722 A CN 110297722A CN 201910584060 A CN201910584060 A CN 201910584060A CN 110297722 A CN110297722 A CN 110297722A
- Authority
- CN
- China
- Prior art keywords
- thread
- queue
- message
- messaging bus
- ready
- 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
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Telephone Function (AREA)
Abstract
本申请实施例公开了一种线程任务通信方法及相关产品,应用于电子设备的低功耗系统级芯片SOC的预设内核,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,内核与消息总线、就绪线程队列和等待线程队列通信连接,方法包括:在检测到就绪线程队列的第一线程处于空闲状态时,遍历消息总线;若在消息总线中查询到与第一线程匹配的第一消息,则调用第一线程从消息总线中读取第一消息,并在消息总线中移除第一消息。本申请实施例为低功耗SOC的软件设计提供便利。
Description
技术领域
本申请涉及无线耳机技术领域,具体涉及一种线程任务通信方法及相关产品。
背景技术
在低功耗系统级芯片SOC上一般运行着实时多任务操作系统(Real TimeOperating System,RTOS),在开发应用时各个线程任务都有通信的需求,由于低功耗SOC的可用资源有限,例如计算能力、存储均会受到严格限制,采用通用的消息中间件难以实现,一般的做法是直接使用内核提供的消息队列。对于基于发布/订阅模式的消息总线,每个主题与一个消息队列相关,发布者往一个主题里发布消息,该主题的订阅者会从消息总线收到相应的消息。有些主题里的消息类型都是一样的,例如传感器主题,这种主题类型的特点是订阅者可以无序的读取消息总线上的消息,发布者也不用关心自己给谁发消息,只要消息能被任一订阅者接收就算发送成功。在低功耗SOC平台上,经常涉及核间通信的应用,核A给核B发送消息,这些消息最终会被转发到具体的线程任务,总线上的消息有明确的接收任务,对于这种类型的主题,总线上的消息类型有多种,且不同类型的消息需要发送给不同的订阅任务。
发明内容
本申请实施例提供了一种线程任务通信方法及相关产品,可以为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
第一方面,本申请实施例提供了一种线程任务通信系统,应用于电子设备的低功耗系统级芯片SOC,所述系统包括基于首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述消息总线与所述就绪对别通信连接,所述消息总线与所述等待队列通信连接,其中,
所述消息总线,用于接收并插入发布者发布的第一消息;
所述等待线程队列,用于缓存预设的与所述消息总线的关联的线程;
所述就绪线程队列,用于缓存与所述消息总线中的待读取的消息匹配的线程;
所述内核,用于在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线,若在所述消息总线中查询到与所述第一线程匹配的所述第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
第二方面,本申请实施例提供了一种线程任务通信方法,应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述方法包括:
在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;
若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
第三方面,本申请实施例提供了一种线程任务通信装置,应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述装置包括处理单元和通信单元,其中,
所述处理单元,用于在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则通过所述通信单元调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
第四方面,本申请实施例提供了一种电子设备,包括:处理器,存储器,以及一个或多个程序;所述一个或多个程序被存储在上述存储器中,并且被配置成由所述处理器执行,所述程序包括用于执行本申请实施例第二方面任一方法中所描述的步骤的指令。
第五方面,本申请实施例提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储有用于电子数据交换的计算机程序,该计算机程序具体包括指令,所述指令用于执行如本申请实施例第二方面任一方法中所描述的部分或全部步骤。
第六方面,本申请实施例提供了一种计算机程序产品,其中,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如本申请实施例第二方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,电子设备的低功耗系统级芯片SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。可见本申请实施例提供的消息总线架构适用于低功耗SOC的消息总线架构,该架构基于FFFO模型,使用该架构可让消息总线上的消息有序的分发到订阅线程里,从而为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例公开的一种消息队列的示意图;
图1B是本申请实施例公开的一种消息总线的示意图;
图2是本申请实施例公开的一种线程任务通信系统的示意图;
图3是本申请实施例公开的一种线程任务通信方法的流程示意图;
图4是本申请实施例公开的另一种线程任务通信方法的流程示意图;
图5是本申请实施例公开的一种电子设备的结构示意图;
图6是本申请实施例公开的一种线程任务通信装置的功能单元组成框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
移动终端可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备(例如智能手表、智能手环、计步器等)、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS),终端设备(terminal device)等等。为方便描述,上面提到的设备统称为移动终端。下面对本申请实施例进行详细介绍。
现在的消息队列一般有两种使用方式:消息队列与消息总线。图1A是消息队列的示意图,一个消息队列从一个应用接收消息,然后一个或多个其它应用可从该消息队列中以先进先出(First Input First Output,FIFO)方式读取消息。在很多架构场景中,如果应用A需要发送消息给应用B和C,系统会为B和C各自创建一个消息队列。A会往这些消息队列里发送消息来实现与B和C通信目的。当A发送消息时,B和C可以做其它事情,无需实时接收。这种架构的最大特点是消息队列与线程任务是一一映射的关系。图1B是消息总线的示意图:消息总线也提供了一种机制用于线程任务间的通信,采用的是发布/订阅设计模式。消息订阅线程无需知道具体的消息发布线程,只要总线上有数据,订阅线程就可以获取消息,而且消息总线不会保证订阅者以FIFO的顺序去读取。
对于消息队列,扩展性比较差,当系统新增线程任务时,也需要相应增加消息队列,而且往新增消息队列里写入消息时,还需要改动消息发送端的代码。虽然消息总线可以增加扩展性,但消息订阅线程基本上是以随机无序的方式从总线读取数据,这在特定的应用场合会给程序设计带来麻烦,例如希望队列里的某个消息发送给指定线程任务。
针对上述问题,本申请实施例提供了一种线程任务通信系统,如图2所示,该线程任务通信系统,应用于电子设备的低功耗系统级芯片SOC,所述系统包括基于首次匹配首次出来首次匹配首次出来(First Fit First Out,FFFO)的消息总线、就绪线程队列和等待线程队列,所述SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述消息总线与所述就绪对别通信连接,所述消息总线与所述等待队列通信连接,其中,
所述消息总线,用于接收并插入发布者发布的第一消息;
其中,所述消息总线可以关联预设类型主题的消息,如压力传感器主题的消息,又如红外传感器主题的消息等,此处不做唯一限定。
其中,所述发布者为所述电子设备的除第一线程之外的第二线程,该第二线程用于完成SOC的预设内核之间的消息传输,如第二线程可以关联第二内核,第一线程可以关联第一内核,所述预设内核可以是SOC包括的一个或多个内核中的任意一个内核或者专用内核,此处不做唯一限定。
所述等待线程队列,用于缓存预设的与所述消息总线的关联的线程;
其中,所述关联的线程可以预先配置好,查表快速确认。
所述就绪线程队列,用于缓存与所述消息总线中的待读取的消息匹配的线程;
其中,所述待读取的消息包括线程名称等线程标识,从而可以通过比对线程标识来定位匹配关系。
所述内核,用于在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线,若在所述消息总线中查询到与所述第一线程匹配的所述第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
其中,所述第一线程在完成除针对第一消息的读取任务之外的任务后将处于空闲状态。
可见,本申请实施例中,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,电子设备的低功耗系统级芯片SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。可见本申请实施例提供的消息总线架构适用于低功耗SOC的消息总线架构,该架构基于FFFO模型,使用该架构可让消息总线上的消息有序的分发到订阅线程里,从而为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
在一个可能的示例中,所述内核在检测到所述就绪线程队列的第一线程处于空闲状态之前,还用于遍历所述等待线程队列,若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程,若在所述等待线程队列中未查询到所述第一线程,则返回。
其中,通过遍历等待线程队列,可以确定当前等待线程队列中是否包括与消息总线中新插入的消息匹配的线程,若有,则需要通过转移该线程至就绪线程队列中以实现唤醒该线程,若没有,则说明该线程已经在先被转移至就绪线程队列中,因此直接返回即可。此遍历处理机制能够保证消息插入到消息总线后,该消息对应的线程确保及时被唤醒,避免处理时延。
在一个可能的示例中,所述内核,还用于若在所述消息总线中未查询到与所述第一线程匹配的所述第一消息,则在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程。
其中,在所述消息总线中未查询到与所述第一线程匹配的所述第一消息时,在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程,可以确保就绪线程队列中始终缓存着有消息读取任务的线程,对于已经完成消息读取的线程,及时转入等待线程队列以使得其休眠。
在一个可能的示例中,所述第一消息携带有所述第一线程的名字。
其中,所述第一消息还可以携带其他用于标识第一线程的身份的标识信息。
请参阅图3,图3是本申请实施例提供了一种线程任务通信方法的流程示意图,应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,如图所示,本线程任务通信方法包括:
S301,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;
S302,若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
可以看出,本申请实施例中,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,电子设备的低功耗系统级芯片SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。可见本申请实施例提供的消息总线架构适用于低功耗SOC的消息总线架构,该架构基于FFFO模型,使用该架构可让消息总线上的消息有序的分发到订阅线程里,从而为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
在一个可能的示例中,所述方法还包括:接收发布者发布的所述第一消息;在所述消息总线中插入所述第一消息。
在一个可能的示例中,所述方法还包括:在检测到所述就绪线程队列的第一线程处于空闲状态之前,遍历所述等待线程队列;若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程;若在所述等待线程队列中未查询到所述第一线程,则返回。
在一个可能的示例中,所述方法还包括:若在所述消息总线中未查询到与所述第一线程匹配的所述第一消息,则在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程。
在一个可能的示例中,所述第一消息携带有所述第一线程的名字。
与所述图3所示的实施例一致的,请参阅图4,图4是本申请实施例提供的另一种线程任务通信方法的流程示意图,应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,如图所示,本线程任务通信方法包括:
S401,接收发布者发布的所述第一消息。
S402,在所述消息总线中插入所述第一消息。
S403,遍历所述等待线程队列。
S404,若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程。
S405,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线。
S406,若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
可以看出,本申请实施例中,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,电子设备的低功耗系统级芯片SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。可见本申请实施例提供的消息总线架构适用于低功耗SOC的消息总线架构,该架构基于FFFO模型,使用该架构可让消息总线上的消息有序的分发到订阅线程里,从而为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
与上述图2、图3所示的实施例一致的,请参阅图5,图5是本申请实施例提供的一种电子设备500的结构示意图,如图所示,该电子设备包括SOC的预设内核501、存储器502、通信接口503以及一个或多个程序504,电子设备500设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核501与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,其中,上述一个或多个程序504被存储在上述存储器502中,并且被配置由上述内核501执行,上述程序504包括用于执行以下步骤的指令:
在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;
若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
可以看出,本申请实施例中,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,电子设备的低功耗系统级芯片SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。可见本申请实施例提供的消息总线架构适用于低功耗SOC的消息总线架构,该架构基于FFFO模型,使用该架构可让消息总线上的消息有序的分发到订阅线程里,从而为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
在一个可能的示例中,所述程序504还包括用于执行以下操作的指令:接收发布者发布的所述第一消息;以及在所述消息总线中插入所述第一消息。
在一个可能的示例中,所述程序504还包括用于执行以下操作的指令:在检测到所述就绪线程队列的第一线程处于空闲状态之前,遍历所述等待线程队列;以及若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程;若在所述等待线程队列中未查询到所述第一线程,则返回。
在一个可能的示例中,所述程序504还包括用于执行以下操作的指令:若在所述消息总线中未查询到与所述第一线程匹配的所述第一消息,则在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程。
在一个可能的示例中,所述第一消息携带有所述第一线程的名字。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图6是本申请实施例中所涉及的线程任务通信装置600的功能单元组成框图。该线程任务通信装置600应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,该线程任务通信装置600包括处理单元601和通信单元602,其中,
所述处理单元601,用于在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则通过所述通信单元602调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
其中,所述线程任务通信装置600还可以包括存储单元603,用于存储移动终端的程序代码和数据。所述处理单元601可以是处理器,所述通信单元602可以是触控显示屏或者收发器,存储单元603可以是存储器。
可以看出,本申请实施例中,电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,电子设备的低功耗系统级芯片SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。可见本申请实施例提供的消息总线架构适用于低功耗SOC的消息总线架构,该架构基于FFFO模型,使用该架构可让消息总线上的消息有序的分发到订阅线程里,从而为低功耗SOC的软件设计提供便利,用户无需再单独创建一个线程任务用于监听消息总线,再转发给其它线程任务,增加了消息总线的扩展性,当SOC增加/减少一个核时,消息总线部分的代码基本无需改动。
在一个可能的示例中,所述处理单元601还用于:通过所述通信单元602接收发布者发布的所述第一消息;以及用于在所述消息总线中插入所述第一消息。
在一个可能的示例中,所述处理单元601在检测到所述就绪线程队列的第一线程处于空闲状态之前,还用于:遍历所述等待线程队列;若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程;若在所述等待线程队列中未查询到所述第一线程,则返回。
在一个可能的示例中,所述处理单元601还用于:若在所述消息总线中未查询到与所述第一线程匹配的所述第一消息,则在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程。
在一个可能的示例中,所述第一消息携带有所述第一线程的名字。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种线程任务通信方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种线程任务通信方法的部分或全部步骤,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
可以理解的是,凡是被控制或者被配置以用于执行本申请所描述的流程图的处理方法的产品,如上述流程图的处理装置、电子设备以及计算机可读存储介质,均属于本申请所描述的相关产品的范畴。
Claims (12)
1.一种线程任务通信系统,其特征在于,应用于电子设备的低功耗系统级芯片SOC,所述系统包括基于首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述SOC的预设内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述消息总线与所述就绪对别通信连接,所述消息总线与所述等待队列通信连接,其中,
所述消息总线,用于接收并插入发布者发布的第一消息;
所述等待线程队列,用于缓存预设的与所述消息总线的关联的线程;
所述就绪线程队列,用于缓存与所述消息总线中的待读取的消息匹配的线程;
所述内核,用于在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线,若在所述消息总线中查询到与所述第一线程匹配的所述第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
2.根据权利要求1所述的系统,其特征在于,所述内核在检测到所述就绪线程队列的第一线程处于空闲状态之前,还用于遍历所述等待线程队列,若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程,若在所述等待线程队列中未查询到所述第一线程,则返回。
3.根据权利要求1或2所述的系统,其特征在于,所述内核,还用于若在所述消息总线中未查询到与所述第一线程匹配的所述第一消息,则在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程。
4.根据权利要求1-3任一项所述的系统,其特征在于,所述第一消息携带有所述第一线程的名字。
5.一种线程任务通信方法,其特征在于,应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述方法包括:
在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;
若在所述消息总线中查询到与所述第一线程匹配的第一消息,则调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收发布者发布的所述第一消息;
在所述消息总线中插入所述第一消息。
7.根据权利要求5或6所述的方法,其特征在于,所述在检测到所述就绪线程队列的第一线程处于空闲状态之前,所述方法还包括:
遍历所述等待线程队列;
若在所述等待线程队列中查询到与所述第一消息匹配的第一线程,则在所述等待线程队列中移除所述第一线程,并在所述就绪线程队列中插入所述第一线程;
若在所述等待线程队列中未查询到所述第一线程,则返回。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若在所述消息总线中未查询到与所述第一线程匹配的所述第一消息,则在所述就绪线程队列中移除所述第一线程,并在所述等待线程队列中插入所述第一线程。
9.根据权利要求5-8任一项所述的方法,其特征在于,所述第一消息携带有所述第一线程的名字。
10.一种线程任务通信装置,其特征在于,应用于电子设备的低功耗系统级芯片SOC的预设内核,所述电子设备设置有首次匹配首次出来FFFO的消息总线、就绪线程队列和等待线程队列,所述内核与所述消息总线、所述就绪线程队列和所述等待线程队列通信连接,所述装置包括处理单元和通信单元,其中,
所述处理单元,用于在检测到所述就绪线程队列的第一线程处于空闲状态时,遍历所述消息总线;若在所述消息总线中查询到与所述第一线程匹配的第一消息,则通过所述通信单元调用所述第一线程从所述消息总线中读取所述第一消息,并在所述消息总线中移除所述第一消息。
11.一种电子设备,其特征在于,包括:处理器,存储器,以及一个或多个程序;所述一个或多个程序被存储在所述存储器中,并且被配置成由所述处理器执行,所述程序包括用于执行如权利要求1-9任一项所描述的方法中的步骤的指令。
12.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910584060.5A CN110297722B (zh) | 2019-06-28 | 2019-06-28 | 线程任务通信方法及相关产品 |
PCT/CN2020/093939 WO2020259227A1 (zh) | 2019-06-28 | 2020-06-02 | 线程任务通信系统、方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910584060.5A CN110297722B (zh) | 2019-06-28 | 2019-06-28 | 线程任务通信方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297722A true CN110297722A (zh) | 2019-10-01 |
CN110297722B CN110297722B (zh) | 2021-08-24 |
Family
ID=68029766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910584060.5A Active CN110297722B (zh) | 2019-06-28 | 2019-06-28 | 线程任务通信方法及相关产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110297722B (zh) |
WO (1) | WO2020259227A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538589A (zh) * | 2020-04-14 | 2020-08-14 | 明见(厦门)技术有限公司 | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 |
WO2020259227A1 (zh) * | 2019-06-28 | 2020-12-30 | Oppo广东移动通信有限公司 | 线程任务通信系统、方法及相关产品 |
CN113268358A (zh) * | 2020-02-17 | 2021-08-17 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置和系统及多设备级联系统 |
CN113704006A (zh) * | 2021-08-31 | 2021-11-26 | 上海阵量智能科技有限公司 | 通信方法、装置、电子设备、存储介质及片上系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975663A (zh) * | 2005-11-30 | 2007-06-06 | 国际商业机器公司 | 具有用于不同线程的非对称硬件多线程支持的装置 |
CN102025649A (zh) * | 2010-06-04 | 2011-04-20 | 西本新干线股份有限公司 | 企业服务总线的消息处理方法 |
WO2014082562A1 (en) * | 2012-11-29 | 2014-06-05 | Tencent Technology (Shenzhen) Company Limited | Method, device, and system for information processing based on distributed buses |
CN108011909A (zh) * | 2016-10-28 | 2018-05-08 | 北京市商汤科技开发有限公司 | 通信方法和系统、电子设备和计算机集群 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6954933B2 (en) * | 2000-10-30 | 2005-10-11 | Microsoft Corporation | Method and apparatus for providing and integrating high-performance message queues in a user interface environment |
CN105991416B (zh) * | 2015-02-15 | 2019-05-31 | 无锡北邮感知技术产业研究院有限公司 | 一种消息传递方法及消息传递中间件 |
US10073686B1 (en) * | 2017-08-10 | 2018-09-11 | Sap Se | Function serialization for inter-thread messaging |
CN107766137A (zh) * | 2017-10-16 | 2018-03-06 | 北京京东尚科信息技术有限公司 | 一种任务处理方法和装置 |
CN109032534B (zh) * | 2018-08-30 | 2022-09-13 | 阿波罗智能技术(北京)有限公司 | 一种无人车消息传输方法、装置、设备和介质 |
CN109144698B (zh) * | 2018-08-30 | 2021-04-27 | 百度在线网络技术(北京)有限公司 | 数据获取方法、事件分发器、设备、介质和无人车 |
CN109885410B (zh) * | 2019-01-09 | 2021-04-13 | 广州视源电子科技股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN110297722B (zh) * | 2019-06-28 | 2021-08-24 | Oppo广东移动通信有限公司 | 线程任务通信方法及相关产品 |
-
2019
- 2019-06-28 CN CN201910584060.5A patent/CN110297722B/zh active Active
-
2020
- 2020-06-02 WO PCT/CN2020/093939 patent/WO2020259227A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975663A (zh) * | 2005-11-30 | 2007-06-06 | 国际商业机器公司 | 具有用于不同线程的非对称硬件多线程支持的装置 |
CN102025649A (zh) * | 2010-06-04 | 2011-04-20 | 西本新干线股份有限公司 | 企业服务总线的消息处理方法 |
WO2014082562A1 (en) * | 2012-11-29 | 2014-06-05 | Tencent Technology (Shenzhen) Company Limited | Method, device, and system for information processing based on distributed buses |
CN108011909A (zh) * | 2016-10-28 | 2018-05-08 | 北京市商汤科技开发有限公司 | 通信方法和系统、电子设备和计算机集群 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020259227A1 (zh) * | 2019-06-28 | 2020-12-30 | Oppo广东移动通信有限公司 | 线程任务通信系统、方法及相关产品 |
CN113268358A (zh) * | 2020-02-17 | 2021-08-17 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置和系统及多设备级联系统 |
CN113268358B (zh) * | 2020-02-17 | 2023-03-14 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置和系统及多设备级联系统 |
CN111538589A (zh) * | 2020-04-14 | 2020-08-14 | 明见(厦门)技术有限公司 | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 |
CN111538589B (zh) * | 2020-04-14 | 2023-05-05 | 明见(厦门)技术有限公司 | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 |
CN113704006A (zh) * | 2021-08-31 | 2021-11-26 | 上海阵量智能科技有限公司 | 通信方法、装置、电子设备、存储介质及片上系统 |
CN113704006B (zh) * | 2021-08-31 | 2023-11-03 | 上海阵量智能科技有限公司 | 通信方法、装置、电子设备、存储介质及片上系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110297722B (zh) | 2021-08-24 |
WO2020259227A1 (zh) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297722A (zh) | 线程任务通信方法及相关产品 | |
EP3531290A1 (en) | Data backup method, apparatus, electronic device, storage medium, and system | |
CN106708554B (zh) | 程序运行方法及装置 | |
CN104142868B (zh) | 建立连接的方法及装置 | |
CN107634962B (zh) | 网络带宽的管理方法及相关产品 | |
CN107484190B (zh) | 网络连接方法、移动终端及计算机可读存储介质 | |
CN109120683A (zh) | 数据传输方法及相关产品 | |
CN111078523B (zh) | 日志获取方法、装置、存储介质及电子设备 | |
CN108600219A (zh) | 一种语音控制方法及设备 | |
CN110740145A (zh) | 消息消费方法、装置、存储介质及电子设备 | |
CN106020962B (zh) | 一种进程控制方法及终端设备 | |
CN111273955A (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
CN106954191B (zh) | 广播发送方法、装置和终端设备 | |
CN103279447A (zh) | 信息处理方法、装置及终端 | |
CN108762983A (zh) | 多媒体数据恢复方法及装置 | |
CN114520827B (zh) | 一种消息接收方法、推送方法、系统及介质 | |
CN109426572B (zh) | 任务处理方法、装置及电子设备 | |
CN109040937A (zh) | 麦克风堵塞提醒方法及相关装置 | |
CN107819831A (zh) | 一种基于metaq及mns的通用消息系统 | |
CN110839296A (zh) | 网络资源调度方法、装置、存储介质及移动终端 | |
CN108769934A (zh) | 信息处理方法、装置以及移动终端 | |
WO2021189253A1 (zh) | 数据传输方法及装置 | |
CN104579901A (zh) | 文件传输结果态的展示方法和装置 | |
CN115114051B (zh) | 节点通信方法、装置、设备及存储介质 | |
CN116743587B (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 |