[发明专利]无损的线程间传递消息的处理方法、系统、设备及在终端在审
申请号: | 202011458442.2 | 申请日: | 2020-12-11 |
公开(公告)号: | CN112540860A | 公开(公告)日: | 2021-03-23 |
发明(设计)人: | 张沐然 | 申请(专利权)人: | 一飞(海南)科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/448;G06F8/30 |
代理公司: | 天津市宗欣专利商标代理有限公司 12103 | 代理人: | 董光仁 |
地址: | 572000 海南省三亚市崖州*** | 国省代码: | 海南;46 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 无损 线程 传递 消息 处理 方法 系统 设备 终端 | ||
本发明属于程序间通信技术领域,公开了一种无损的线程间传递消息的处理方法、系统、设备及在终端,针对消息子类细化,每添加一种子类就新申请一块内存用于该消息的处理,配合已经存在的条件处理机制,形成一种新的数据结构;由完全独立和对应的处理接口对子类进行处理,通过分而治之的方法,将消息细化。本发明能够实现消息单项更新处理和覆盖、消息整体检索的功能,提高了消息处理的效率,解决了消息队列中消息覆盖和线程阻塞导致大量消息丢失的问题。本发明占用内存空间量跟随子类消息类型数量增加而增加,在中小范围消息处理量中完全可行,通过小范围空间代替时间的处理方法,实现了单项子类消息的完全处理。
技术领域
发明型属于程序间通信技术领域,尤其涉及一种无损的线程间传递消息的处理方法、系统、设备及在终端。
背景技术
Linux线程间通信,目前存在6中大方向的通讯机制,分别是管道、信号量、信号、消息队列、共享内存、和套接字。针对线程间通讯的消息队列处理机制,在有一些高覆盖、高频发的任务间使用时,会存在消息丢失,消息覆盖的问题,当发起任务的频率高于处理任务的频率时,就会存在不同类型消息被覆盖的问题。
通过上述分析,现有技术存在的问题及缺陷为:在使用的linux线程间通讯设计接口时,发现两个任务间通讯使用C++消息队列(std::queue)时,如果同一大类的消息中断产生的速度快于该消息接口的处理速度,就会存在不同小类消息总是被最新消息覆盖的问题,这导致消息处理不及时,一些短时间内只产生一次的低频消息处理就会丢失,从而影响整个系统的正常运行。
解决以上问题及缺陷的难度为:
在比较细致的问题解决方面该问题解决的难度相对适中。
解决以上问题及缺陷的意义为:
能够提高嵌入式系统运行稳定性,保证数据能够正常处理,不会因为数据刷新太快而对系统逻辑运行造成影响,在只处理最新消息的同时,又不妨碍有效信息的保存。有利于软件运行的稳定和健壮。
发明内容
为了解决现有技术存在的linux线程间通讯时,不同类型消息同时产生,处理线程无法对消息进行处理时,消息丢失和覆盖问题,发明型提供了一种无损的线程间传递消息的处理方法、系统、设备及在终端。
发明型是这样实现的,一种无损的linux线程间传递消息的处理方法,该无损的linux线程间传递消息的处理方法包括:
针对消息子类细化,每添加一种子类就新申请一块内存用于该消息的处理,配合已经存在的条件处理机制,形成一种新的数据结构;
由完全独立和对应的处理接口对子类进行处理,通过分而治之的方法,将消息细化。
将大类信息进行分类,分成几种独立的数据结构,每新添加一条消息类型,就新增一块内存区域进行单独的保存该信息,各类相对独立的数据结构不会因为相互之前的刷新被影响,独立的子类消息的更新,不妨碍其他消息的解析和运行,但同时又能唤醒其他消息的检索机制,提高信息的解析率。
进一步,配合各子类消息的条件处理机制,实现各子类消息单独驱动,相同类型大类消息被子类消息整体驱动和检索,完成消息多次检索。
进一步,同类消息的子项分而治之,大类消息整体接收和任务唤醒、各子项消息单独处理。
之前的消息定义方式:
typedef struct{
message_t msg[100];
std::condition_variable conditionNew;
}GetMsg_t;
GetMsg_t dance_get_msg;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于一飞(海南)科技有限公司,未经一飞(海南)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011458442.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:变电站工程的费用预测方法
- 下一篇:一种编队无人机批量固件升级实现系统、方法