[发明专利]进程间通信方法、装置及存储介质有效
申请号: | 201911304874.5 | 申请日: | 2019-12-17 |
公开(公告)号: | CN111158927B | 公开(公告)日: | 2023-10-24 |
发明(设计)人: | 陈燮民;黄真明;吴群;周昆 | 申请(专利权)人: | 科大讯飞股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 深圳市威世博知识产权代理事务所(普通合伙) 44280 | 代理人: | 黎坚怡 |
地址: | 230088 安徽省*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 通信 方法 装置 存储 介质 | ||
1.一种进程间通信方法,其特征在于,包括:
利用读对象打开共享内存流并获取所述共享内存流的写入指针,所述共享内存流用于流式存储数据包,所述写入指针用于指示第一数据包的位置并且在完成所述第一数据包的写入后更新,所述第一数据包为最后一次向所述共享内存流写入的数据包;
利用所述读对象比较所述读对象的当前读指针与所述写入指针,所述当前读指针用于指示第二数据包的位置,所述第二数据包为利用所述读对象最后一次从所述共享内存流中读取的数据包;
若比较结果表示所述第一数据包在所述第二数据包之后,则利用所述读对象从所述共享内存流中读取所述第二数据包之后的数据包并更新所述当前读指针。
2.根据权利要求1所述的方法,其特征在于,
所述写入指针与所述第一数据包之间的相对位置关系与所述当前读指针与所述第二数据包之间的相对位置关系相同,所述写入指针在所述当前读指针之后的所述比较结果表示所述第一数据包在所述第二数据包之后。
3.根据权利要求2所述的方法,其特征在于,
所述写入指针指向所述第一数据包的结尾,所述当前读指针指向所述第二数据包的结尾。
4.根据权利要求1所述的方法,其特征在于,进一步包括:
若所述比较结果表示所述第一数据包与所述第二数据包相同,则不利用所述读对象从所述共享内存流中进行读取。
5.根据权利要求1所述的方法,其特征在于,
所述利用所述读对象从所述共享内存流中读取所述第二数据包之后的数据包包括:
判断所述第二数据包之后的下一数据包是否存在;
若存在,则利用所述读对象读取所述第二数据包之后的下一数据包,并在读取完成之后更新所述当前读指针;
若更新后的所述第二数据包与所述第一数据包不同,则继续执行上述步骤,否则停止读取。
6.根据权利要求5所述的方法,其特征在于,所述判断所述第二数据包之后的下一数据包是否存在包括:
确定所述第一数据包的结尾与所述第二数据包的结尾之差是否大于或等于所述下一数据包的大小,其中所述下一数据包的大小是固定值或者是包括在所述下一数据包中。
7.根据权利要求1所述的方法,其特征在于,
所述利用读对象打开共享内存流包括:
利用所述读对象打开共享内存流信息表;
利用所述读对象在所述共享内存流信息表中查找所述共享内存流的条目,所述共享内存流的条目包括所述共享内存流的写对象信息和标识;
利用所述读对象通过所述共享内存流的标识打开所述共享内存流。
8.根据权利要求7所述的方法,其特征在于,
所述共享内存流的条目进一步包括所述共享内存流的名称、类型和所述写入指针中的至少一种。
9.根据权利要求1-8中任一项所述的方法,其特征在于,进一步包括:
利用写对象向所述共享内存流的结尾写入更新数据包,所述更新数据包是利用所述写对象的待写入数据而得到的;
完成写入后利用所述写对象更新所述写入指针。
10.根据权利要求9所述的方法,其特征在于,所述利用写对象向所述共享内存流的结尾写入更新数据包之前进一步包括:
利用所述写对象确定所述共享内存流是否处于写保护状态,所述写保护状态表示所述共享内存流正在被其他写对象写入;
若所述共享内存流未处于所述写保护状态,则利用所述写对象对所述共享内存流上写入锁,以使所述共享内存流进入所述写保护状态;
所述利用写对象向所述共享内存流的结尾写入更新数据包之后进一步包括:
利用所述写对象对所述共享内存流解除所述写入锁,以使所述共享内存流离开所述写保护状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于科大讯飞股份有限公司,未经科大讯飞股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911304874.5/1.html,转载请声明来源钻瓜专利网。