[发明专利]一种多任务间数据通信的实现方法及系统无效
申请号: | 201110329140.X | 申请日: | 2011-10-26 |
公开(公告)号: | CN102426536A | 公开(公告)日: | 2012-04-25 |
发明(设计)人: | 梁亚宁 | 申请(专利权)人: | 深圳市亚特尔科技有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/54 |
代理公司: | 北京英特普罗知识产权代理有限公司 11015 | 代理人: | 齐永红;郭少晶 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 任务 数据通信 实现 方法 系统 | ||
技术领域
本发明涉及数据通信领域,尤其涉及一种多任务间数据通信的实现方法及系统。
背景技术
在嵌入式系统的应用中,往往会遇到有大量实时数据需要送到不同程序由不同的客户端进行处理的情况,此时还要求数据分发过程中每个处理进程在所需数据丢失时,能够得到通知并知道所丢失的数据数量。但是,这些数据本身通常产生的速率较高,相对于嵌入式系统有限的内存来说,占用的内存空间较为可观,而大量数据在进程间交换时,通常采用高效的共享内存机制。
但是,在应用上述共享内存机制时,发明人发现现有技术中至少存在如下问题:共享内存在多个进程同时访问时,缺乏同步机制,容易造成共享数据的紊乱,使得共享内存中数据与源数据不再一致。同时,共享内存采用无格式数据,不便于数据的处理。
发明内容
本发明的实施例提供一种多任务间数据通信的实现方法及系统,以便提高Linux系统中的数据处理效率。
为达到上述目的,本发明的实施例采用如下技术方案:
一种多任务间数据通信的实现方法,包括:
分发模块从数据源处获取数据;
分发模块根据作为消费者的各客户端模块已注册的数据类型和客户端特性信息将所述数据写入到共享内存;
所述分发模块根据所述已注册的数据类型和客户端特性信息通知所述作为消费者的各客户端模块来读取所述共享内存中的数据。
进一步,上述方法还可还包括:
所述分发模块在任务启动时,链接到已创建的用于为所述作为消费者的各客户端模块存储数据的共享内存上;向数据结构注册自己的数据类型和特性信息,其中,所述特性信息至少包括分发模块ID和数据写入共享内存的写入方式;根据分发模块ID创建与自身相对应的消息队列,并根据各客户端模块ID创建与各客户端模块一一对应的消息队列;创建用于指示写入的操作锁;
所述作为消费者的各客户端模块在其任务启动时,链接到已创建的用于为其存储数据的共享内存上;向数据结构注册用于指示分发模块通知作为消费者的客户端模块读取所述共享内存中的数据的信息和客户端特性信息,其中,客户端特性信息至少包括所述客户端模块ID和从共享内存中读取数据的读取方式;每个作为消费者的客户端模块均根据分发模块ID创建与分发模块相对应的消息队列,并根据自身的客户端模块ID创建与自身相对应的消息队列,以及根据其他客户端模块ID创建与其他客户端模块一一对应的消息队列;创建所述用于指示读取的操作锁。
进一步,该方法还可包括:
所述分发模块在所述写入之前,将所述用于指示写入的操作锁指示为写锁,代表在写入所述共享内存的过程不接收其他访问;
所述分发模块在通知所述作为消费者的各客户端模块来读取所述共享内存中的数据之后,将所述用于指示写入的操作锁指示为解写锁。
相应地,该方法还可包括:
对于每个所述作为消费者的客户端模块,在接收到所述分发模块的所述通知后,将所述用于指示读取的操作锁指示为读锁,代表在读取所述共享内存的过程中允许读访问,但拒绝写访问,并开始读取所述共享内存中的数据;
每个所述作为消费者的客户端模块,在读取完所述共享内存中的数据后,将所述用于指示读取的操作锁指示为解读锁。
其中,所述开始读取所述共享内存中的数据具体为:每个所述作为消费者的客户端模块根据注册时的读取方式开始读取所述共享内存中的数据,所述读取方式包括:先写入先读取方式,后写入先读取方式,以及同时读取多个数据的方式。
特别地,该方法还包括:
每个所述作为消费者的客户端模块在每次读取完所述共享内存中的数据后,通过置所述共享内存中的一个标识位的方式通知所述分发模块是否继续向所述作为消费者的各客户端模块的消息队列发送读取共享内存的通知。
一种多任务间数据通信的实现系统,包括:分发模块,和至少一个客户端模块;其中,所述至少一个客户端模块至少可成为作为消费者的客户端模块;
所述分发模块,用于根据所述作为消费者的客户端模块已注册的数据类型和客户端特性信息将所述数据写入到共享内存中;并根据所述已注册的数据类型和客户端特性信息通知所述作为消费者的客户端模块来读取所述共享内存中的数据;
所述作为消费者的客户端模块,用于在接收到所述通知后,开始读取所述共享内存中的数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市亚特尔科技有限公司,未经深圳市亚特尔科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110329140.X/2.html,转载请声明来源钻瓜专利网。