CN105264499B - 一种共享队列中的消息处理方法、装置及接收核 - Google Patents
一种共享队列中的消息处理方法、装置及接收核 Download PDFInfo
- Publication number
- CN105264499B CN105264499B CN201380003405.4A CN201380003405A CN105264499B CN 105264499 B CN105264499 B CN 105264499B CN 201380003405 A CN201380003405 A CN 201380003405A CN 105264499 B CN105264499 B CN 105264499B
- Authority
- CN
- China
- Prior art keywords
- message
- msg
- num
- rsv
- shared queue
- 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
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Abstract
本发明适用于消息处理技术领域,提供了一种共享队列中的消息处理方法、装置及接收核。所述方法包括以下步骤:接收核中的中断处理程序接收共享队列发送的中断通知消息;所述中断处理程序读取预订消息个数;所述中断处理程序判断读取到的预订消息个数;如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,所述中断处理程序直接退出;如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息。本发明在多个接收核共享一个队列时避免无效业务线程的唤醒,减少时延,另外可以使业务线程在多接收端的共享队列消息处理场景下处理大于1的固定个数的消息。
Description
技术领域
本发明属于消息处理技术领域,尤其涉及一种共享队列中的消息处理方法、装置及接收核。
背景技术
一般在多线程多核中使用共享消息来加快线程或核间通信的效率。其中一种广泛使用的场景是一个发送端,多个接收端。消息数据可以被其中任一个核接收,多个接收核之间存在竞争关系。
请参阅图1,为多接收端的共享队列消息处理场景,一般的处理流程示例如下,场景中假定2个接收核:
步骤1:发送核将消息数据写入到共享队列中;
步骤2:共享队列产生事件中断,通知所有的相关的接收核;
步骤3:接收核中的中断处理程序处理中断,根据队列序号等信息进行判断,调度相应的业务线程0或1来从共享队列中读取消息数据;
步骤4:业务线程0和1都从共享队列中竞争式地读取消息。这样,一个业务线程能读取到消息,另外一个业务线程则读取不到消息。读取不到消息的业务线程会不执行任何操作而退出。
由上可知,由于消息共享的原因,整个流程中会有无效业务线程的唤醒,当消息比较多的时候导致核的运行效率非常低;另外,业务线程在每次唤醒时无法处理大于1的固定消息个数。比如,如果每次唤醒后固定处理2个消息,共享队列里面每来2个消息产生一个中断,当一个消息被读取时,有可能另外一个消息被其他线程读取了。
发明内容
本发明的目的在于提供一种共享队列中的消息处理方法、装置及接收核,旨在解决现有技术中存在的由于消息共享的原因,整个流程中会有无效业务线程的唤醒,当消息比较多的时候导致核的运行效率非常低;另外,业务线程在每次唤醒时无法处理大于1的固定消息个数。比如,如果每次唤醒后固定处理2个消息,共享队列里面每来2个消息产生一个中断,当一个消息被读取时,有可能另外一个消息被其他线程读取了的问题。
本发明是这样实现的,一种共享队列中的消息处理方法,所述方法包括以下步骤:
接收核中的中断处理程序接收共享队列发送的中断通知消息;
所述中断处理程序读取预订消息个数;
所述中断处理程序判断读取到的预订消息个数;
如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,所述中断处理程序直接退出;
如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息。
本发明的另一目的在于提供一种共享队列中的消息处理装置,所述装置包括:
接收模块,用于接收共享队列发送的中断通知消息;
读取模块,用于读取预订消息个数;
判断模块,用于判断读取到的预订消息个数;
唤醒控制模块,用于如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,所述中断处理程序直接退出;如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息。
本发明的另一目的在于提供一种包括上面所述的共享队列中的消息处理装置的接收核。
在本发明中,当核的中断被触发后,通过消息预订是否成功决定是否激活对应的任务。使得在多个接收核共享一个队列时避免无效业务线程的唤醒,减少时延,另外可以使业务线程在多接收端的共享队列消息处理场景下处理大于1的固定个数的消息。
附图说明
图1是现有技术提供的共享队列消息处理流程示意图。
图2是本发明实施例提供的共享队列中的消息处理方法的实现流程示意图。
图3是本发明实施例提供的共享队列中的消息处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图2,为本发明实施例提供的共享队列中的消息处理方法的实现流程,其包括以下步骤:
在步骤S101中,接收核中的中断处理程序接收共享队列发送的中断通知消息;
作为本发明一实施例,在步骤S101之前,还包括以下步骤:
在共享队列中预先设置预订消息个数的计数器。
在步骤S102中,所述中断处理程序读取预订消息个数;
在本发明实施例中,所述中断处理程序从计数器中读取预订消息个数。
在步骤S103中,所述中断处理程序判断读取到的预订消息个数;
在步骤S104中,如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,所述中断处理程序直接退出;
在步骤S105中,如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息。
在本发明实施例中,假定共享队列里的总消息个数为total_num,触发中断的消息个数阈值为msg_threshold,预订消息个数为msg_rsv_num,预订消息个数的计算步骤,具体为:
在步骤S201中,业务线程读取共享队列中的预订消息个数msg_rsv_num,共享队列判断总消息个数total_num-触发中断的消息个数阈值msg_threshold-预订消息个数msg_rsv_num的值是否大于等于0,如果大于等于0,则计算msg_rsv_num的值,msg_rsv_num=msg_rsv_num+msg_threshold,共享队列向业务线程返回计算得到的msg_rsv_num的值;进入步骤S202。如果小于0,则计数器中的预订消息个数的值不变,共享队列向业务线程返回0值。
在步骤S202中,业务线程读取共享队列中的消息,共享队列判断msg_rsv_num是否大于0,如果大于0,则更新msg_rsv_num的值,msg_rsv_num=msg_rsv_num-1。
本发明实施例可以应用在LTE CoMP中,可以将sRIO数据接收完成消息发到共享队列;其它核在最低优先级(比IDLE任务优先级高)接收共享消息。当核的中断被触发后,通过消息预订是否成功决定是否激活对应的任务。
请参阅图3,为本发明实施例提供的共享队列中的消息处理装置,为了便于说明,仅示出了与本发明实施例相关的部分。所述共享队列中的消息处理装置包括:接收模块101、读取模块102、判断模块103、唤醒控制模块104。所述共享队列中的消息处理装置可以是内置于接收核中的软件单元、硬件单元或者是软硬件结合的单元。
接收模块101,用于接收共享队列发送的中断通知消息;
读取模块102,用于读取预订消息个数;
判断模块103,用于判断读取到的预订消息个数;
唤醒控制模块104,用于如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,所述中断处理程序直接退出;如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息。
作为本发明一实施例,所述装置还包括:设置模块。
设置模块,用于在共享队列中设置预订消息个数的计数器。
在本发明实施例中,
读取模块102,具体用于从计数器中读取预订消息个数。
作为本发明一实施例,所述装置还包括:预订消息个数读取模块、数值判断模块、计算模块、控制模块以及更新模块。
预订消息个数读取模块,用于读取共享队列中的预订消息个数msg_rsv_num;
数值判断模块,用于判断总消息个数total_num-触发中断的消息个数阈值msg_threshold-预订消息个数msg_rsv_num的值是否大于等于0,
计算模块,用于如果判断出大于等于0,则计算msg_rsv_num的值,msg_rsv_num=msg_rsv_num+msg_threshold;
控制模块,用于控制共享队列向业务线程返回计算得到的msg_rsv_num的值;如果小于0,则计数器中的预订消息个数的值不变,控制共享队列向业务线程返回0值。
更新模块,用于读取共享队列中的消息,共享队列判断msg_rsv_num是否大于0,如果大于0,则更新msg_rsv_num的值,msg_rsv_num=msg_rsv_num-1。
综上所述,本发明实施例当核的中断被触发后,通过消息预订是否成功决定是否激活对应的任务。使得在多个接收核共享一个队列时避免无效业务线程的唤醒,减少时延,另外可以使业务线程在多接收端的共享队列消息处理场景下处理大于1的固定个数的消息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种共享队列中的消息处理方法,其特征在于,所述方法包括以下步骤:
接收核中的中断处理程序接收共享队列发送的中断通知消息;
所述中断处理程序读取预订消息个数;
所述中断处理程序判断读取到的预订消息个数;
如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,所述中断处理程序直接退出;
如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息;
在所述接收核中的中断处理程序接收共享队列发送的中断通知消息的步骤前,还包括以下步骤:
在共享队列中预先设置预订消息个数的计数器;
所述中断处理程序读取预订消息个数的步骤,具体为:
所述中断处理程序从计数器中读取预订消息个数。
2.如权利要求1所述的方法,其特征在于,所述预订消息个数的计算步骤,具体为:
业务线程读取共享队列中的预订消息个数msg_rsv_num,共享队列判断总消息个数total_num-触发中断的消息个数阈值msg_threshold-预订消息个数msg_rsv_num的值是否大于等于0,如果大于等于0,则计算msg_rsv_num的值,msg_rsv_num=msg_rsv_num+msg_threshold,共享队列向业务线程返回计算得到的msg_rsv_num的值;业务线程读取共享队列中的消息,共享队列判断msg_rsv_num是否大于0,如果大于0,则更新msg_rsv_num的值,msg_rsv_num=msg_rsv_num-1;
如果总消息个数total_num-触发中断的消息个数阈值msg_threshold-预订消息个数msg_rsv_num的值小于0,则计数器中的预订消息个数的值不变,共享队列向业务线程返回0值。
3.一种共享队列中的消息处理装置,其特征在于,所述装置包括:
接收模块,用于接收共享队列发送的中断通知消息;
读取模块,用于读取预订消息个数;
判断模块,用于判断读取到的预订消息个数;
唤醒控制模块,用于如果判断出预订消息个数为0,则认为消息已被其他接收核抢占,不唤醒业务线程,中断处理程序直接退出;如果判断出预订消息个数为非0,则认为消息预订成功,唤醒业务线程,所述业务线程从共享队列中读取消息;
所述装置还包括:
设置模块,用于在共享队列中设置预订消息个数的计数器;
读取模块,具体用于从计数器中读取预订消息个数。
4.如权利要求3所述的装置,其特征在于,所述装置还包括:
预订消息个数读取模块,用于读取共享队列中的预订消息个数msg_rsv_num;
数值判断模块,用于判断总消息个数total_num-触发中断的消息个数阈值msg_threshold-预订消息个数msg_rsv_num的值是否大于等于0,
计算模块,用于如果判断出大于等于0,则计算msg_rsv_num的值,msg_rsv_num=msg_rsv_num+msg_threshold;
控制模块,用于控制共享队列向业务线程返回计算得到的msg_rsv_num的值;如果小于0,则计数器中的预订消息个数的值不变,控制共享队列向业务线程返回0值;
更新模块,用于读取共享队列中的消息,共享队列判断msg_rsv_num是否大于0,如果大于0,则更新msg_rsv_num的值,msg_rsv_num=msg_rsv_num-1。
5.一种包括权利要求3至4任一项所述的共享队列中的消息处理装置的接收核。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/090139 WO2015089839A1 (zh) | 2013-12-20 | 2013-12-20 | 一种共享队列中的消息处理方法、装置及接收核 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105264499A CN105264499A (zh) | 2016-01-20 |
CN105264499B true CN105264499B (zh) | 2018-03-13 |
Family
ID=53402006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380003405.4A Active CN105264499B (zh) | 2013-12-20 | 2013-12-20 | 一种共享队列中的消息处理方法、装置及接收核 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105264499B (zh) |
WO (1) | WO2015089839A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681467B (zh) * | 2018-03-27 | 2021-07-06 | 维沃移动通信有限公司 | 一种系统唤醒方法、终端 |
CN111858095B (zh) * | 2020-07-17 | 2022-06-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种硬件队列多线程共享方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0602773A1 (en) * | 1992-12-18 | 1994-06-22 | Fujitsu Limited | Data communication between processors in multiprocessor systems |
CN101086712A (zh) * | 2006-06-07 | 2007-12-12 | 国际商业机器公司 | 用于在内核间共享内核服务的方法和系统 |
CN102117261A (zh) * | 2009-12-30 | 2011-07-06 | 重庆重邮信科通信技术有限公司 | 一种芯片内部处理器之间的通信方法 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
-
2013
- 2013-12-20 CN CN201380003405.4A patent/CN105264499B/zh active Active
- 2013-12-20 WO PCT/CN2013/090139 patent/WO2015089839A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0602773A1 (en) * | 1992-12-18 | 1994-06-22 | Fujitsu Limited | Data communication between processors in multiprocessor systems |
CN101086712A (zh) * | 2006-06-07 | 2007-12-12 | 国际商业机器公司 | 用于在内核间共享内核服务的方法和系统 |
CN102117261A (zh) * | 2009-12-30 | 2011-07-06 | 重庆重邮信科通信技术有限公司 | 一种芯片内部处理器之间的通信方法 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105264499A (zh) | 2016-01-20 |
WO2015089839A1 (zh) | 2015-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105337755B (zh) | 主从架构服务器及其处理业务的方法和处理业务的系统 | |
CN107197015A (zh) | 一种基于消息队列系统的消息处理方法和装置 | |
CN110300067B (zh) | 队列调整方法、装置、设备及计算机可读存储介质 | |
CN108650667A (zh) | 终端调度方法和装置 | |
CN103064736A (zh) | 任务处理装置及方法 | |
US10803004B2 (en) | Modular UPS system and data transmission method for power device | |
CN104980472A (zh) | 网络访问量的控制方法及装置 | |
WO2014031115A1 (en) | Cloud process management | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 | |
CN110780986B (zh) | 一种基于移动边缘计算的物联网任务调度方法及系统 | |
CN112134763A (zh) | 一种集群节点间分层消息传输方法、系统、设备及介质 | |
CN103475520B (zh) | 一种分布式网络中的事务处理控制方法及装置 | |
JP6785332B2 (ja) | ブルートゥーススピーカーデータ処理の方法、装置及びブルートゥーススピーカー | |
CN106162577A (zh) | 一种消息推送方法,及消息推送设备 | |
CN110147254A (zh) | 一种数据缓存处理方法、装置、设备及可读存储介质 | |
CN103747484B (zh) | 一种rim流程系统信息处理方法和服务节点设备 | |
CN115996197B (zh) | 一种流量拥塞前置的分布式计算流量仿真系统与方法 | |
CN110944064B (zh) | 嵌入式网络的远程访问控制系统、方法、设备和介质 | |
CN106570011A (zh) | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 | |
CN107241788A (zh) | 可穿戴设备的功耗控制方法及装置 | |
CN109863791A (zh) | 用于在无线通信系统中选择接入网络的方法和装置 | |
CN104954148B (zh) | 节点设备的控制方法、装置及路由器 | |
US9503977B2 (en) | Method and apparatus for reducing wireless traffic by controlling management frame in wireless local area network (WLAN) | |
CN106209676A (zh) | 基于多设备的云主机系统的数据处理方法及装置 | |
CN109361620B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |