【技术实现步骤摘要】
进程间通信方法、装置及存储介质
本申请涉及计算机领域,特别是涉及一种进程间通信方法、装置及存储介质。
技术介绍
在多进程系统中,不同进程之间的相互通信需要使用进程间通信机制。常见的进程间通信机制有共享内存等。共享内存是一种简单快速的进程间通信机制,然而为了保证共享内存中数据的准确性,需要选择合适的同步机制以协调进程间的执行顺序。常见的进程间同步机制有互斥锁、自旋锁等。这些同步机制中读操作和写操作是互斥的,也就是说,若有进程正在向共享内存写入数据,其他进程必须等到写入完成后才能进行读取操作,反之亦然。同步机制引入的可能的等待时间给进程间通信带来了延时,影响了进程间通信的效率。
技术实现思路
本申请提供一种进程间通信方法、装置及存储介质,能够解决现有技术中的同步机制影响进程间通信效率的问题。为解决上述技术问题,本申请采用的一个技术方案是:提供一种进程间通信方法,该进程间通信方法包括:利用读对象打开共享内存流并获取共享内存流的写入指针,共享内存流用于流式存储数据包,写入指针用于指示第一数据包的位置并且在完成第一数据包的写入后更新,第一数据包为最后一次向共享内存流写入的数据包;利用读对象比较读对象的当前读指针与写入指针,当前读指针用于指示第二数据包的位置,第二数据包为利用读对象最后一次从共享内存流中读取的数据包;若比较结果表示第一数据包在第二数据包之后,则利用读对象从共享内存流中读取第二数据包之后的数据包并更新当前读指针。为解决上述技术问题,本申请采用的另一个技术方案是:提 ...
【技术保护点】
1.一种进程间通信方法,其特征在于,包括:/n利用读对象打开共享内存流并获取所述共享内存流的写入指针,所述共享内存流用于流式存储数据包,所述写入指针用于指示第一数据包的位置并且在完成所述第一数据包的写入后更新,所述第一数据包为最后一次向所述共享内存流写入的数据包;/n利用所述读对象比较所述读对象的当前读指针与所述写入指针,所述当前读指针用于指示第二数据包的位置,所述第二数据包为利用所述读对象最后一次从所述共享内存流中读取的数据包;/n若比较结果表示所述第一数据包在所述第二数据包之后,则利用所述读对象从所述共享内存流中读取所述第二数据包之后的数据包并更新所述当前读指针。/n
【技术特征摘要】
1.一种进程间通信方法,其特征在于,包括:
利用读对象打开共享内存流并获取所述共享内存流的写入指针,所述共享内存流用于流式存储数据包,所述写入指针用于指示第一数据包的位置并且在完成所述第一数据包的写入后更新,所述第一数据包为最后一次向所述共享内存流写入的数据包;
利用所述读对象比较所述读对象的当前读指针与所述写入指针,所述当前读指针用于指示第二数据包的位置,所述第二数据包为利用所述读对象最后一次从所述共享内存流中读取的数据包;
若比较结果表示所述第一数据包在所述第二数据包之后,则利用所述读对象从所述共享内存流中读取所述第二数据包之后的数据包并更新所述当前读指针。
2.根据权利要求1所述的方法,其特征在于,
所述写入指针与所述第一数据包之间的相对位置关系与所述当前读指针与所述第二数据包之间的相对位置关系相同,所述写入指针在所述当前读指针之后的所述比较结果表示所述第一数据包在所述第二数据包之后。
3.根据权利要求2所述的方法,其特征在于,
所述写入指针指向所述第一数据包的结尾,所述当前读指针指向所述第二数据包的结尾。
4.根据权利要求1所述的方法,其特征在于,进一步包括:
若所述比较结果表示所述第一数据包与所述第二数据包相同,则不利用所述读对象从所述共享内存流中进行读取。
5.根据权利要求1所述的方法,其特征在于,
所述利用所述读对象从所述共享内存流中读取所述第二数据包之后的数据包包括:
判断所述第二数据包之后的下一数据包是否存在;
若存在,则利用所述读对象读取所述第二数据包之后的下一数据包,并在读取完成之后更新所述当前读指针;
若更新后的所述第二数据包与所述第一数据包不同,则继续执行上述步骤,否则停止读取。
6.根据权利要求5所述的方法,其特征在于,所述判断所述第二数据包之后的下一数据包是否存在包括:
确定所述第一数据包的结尾与所述第二数据包的结尾之差是否大于或等于所述下一数据包的大小,其中所述下一数据包的大小是固定值或者是包括在所述下一数据包中。
7.根据权利要求1所述的方法,其特征在于,
所述利用读对象打开共享内存流包括:
利用所述读对象打开共享内存流信息表;
利用所述读对象在所述共享内存流信息表中查找所述共享内存流的条目,所述共享内存流的条...
【专利技术属性】
技术研发人员:陈燮民,黄真明,吴群,周昆,
申请(专利权)人:科大讯飞股份有限公司,
类型:发明
国别省市:安徽;34
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。