System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种基于共享内存的跨进程通信方法、装置、设备及存储介质。
技术介绍
1、目前大部分软件都是通过单语言单进程架构设计来完成,但是在实际技术落地的过程中往往会面临多进程多语言同时对接的场景,此时要考虑进程间通信(interprocesscommunication,ipc)。
2、目前流行的ipc通信主要有domainsockt、共享内存以及内存管道等技术手段,为了更好的性能和考虑易用性,一般都会采用共享内存来进行ipc通信,但是传统的单通道共享内存由于只有一个通道,数据流向受到限制,一方访问共享内存时,需要锁定共享内存,另一方需要等待解锁后才能访问,通信效率较底。
技术实现思路
1、本申请实施例提供了一种基于共享内存的跨进程通信方法、装置、设备及存储介质,可以提高进程的通信效率。
2、第一方面,本申请实施例提供了一种基于共享内存的跨进程通信方法,其包括:
3、获取第一进程发送的携带有第一进程标识的目标写入请求;
4、根据所述第一进程标识以及预设的目标槽位读写规则从多个进程所共享的环形队列中确定第一槽位队列,所述环形队列包括多个槽位队列,所述目标槽位读写规则包括各进程分别对各槽位队列的读写权限,且一个槽位队列对应一个进程的写权限以及至少一个进程的读权限;
5、根据所述第一槽位队列中各槽位的读写标志位从所述第一槽位队列中确定目标写入槽位,并基于所述目标写入槽位执行所述目标写入请求的写入操作;
7、根据所述第二进程标识以及所述目标槽位读写规则从所述环形队列中确定第二槽位队列;
8、根据所述第二槽位队列中各槽位的读写标志位从所述第二槽位队列中确定目标读取槽位,并根据所述目标读取槽位执行所述目标读取请求的读取操作。
9、第二方面,本申请实施例还提供了一种基于共享内存的跨进程通信装置,其包括:收发单元,用于获取第一进程发送的携带有第一进程标识的目标写入请求;
10、处理单元,用于根据所述第一进程标识以及预设的目标槽位读写规则从多个进程所共享的环形队列中确定第一槽位队列,所述环形队列包括多个槽位队列,所述目标槽位读写规则包括各进程分别对各槽位队列的读写权限,且一个槽位队列对应一个进程的写权限以及至少一个进程的读权限;根据所述第一槽位队列中各槽位的读写标志位从所述第一槽位队列中确定目标写入槽位,并基于所述目标写入槽位执行所述目标写入请求的写入操作;
11、所述收发单元,还用于获取第二进程发送的携带有第二进程标识的目标读取请求;
12、所述处理单元,用于根据所述第二进程标识以及所述目标槽位读写规则从所述环形队列中确定第二槽位队列;根据所述第二槽位队列中各槽位的读写标志位从所述第二槽位队列中确定目标读取槽位,并根据所述目标读取槽位执行所述目标读取请求的读取操作。
13、第三方面,本申请实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
14、第四方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述方法。
15、由以上技术方案可以看出,本申请中多个进程共享一个环形队列,该环形队列包括多个槽位队列,并且在目标槽位规则中设置了各个进程分别对各槽位队列的读写权限,当获取第一进程发送的目标写入请求后,基于该目标槽位规则从环形队列中找出对该第一进程开放了写权限的第一槽位队列,并从第一槽位队列确定目标写入槽位,基于目标写入槽位执行该目标写入请求的写入操作;当获取到第二进程发送的目标读取请求之后,基于该目标槽位规则从环形队列中找出对该第二进程开放了读权限的第二槽位队列,并从第二槽位队列确定目标读取槽位,基于目标读取槽位执行该目标读取请求的读取操作;可见,本申请中第一进程的写操作与第二进程的读操作之间相互不影响,第一进程的写操作和第二进程的读操作可以同时进行,从而提高了进程的通信效率。
本文档来自技高网...【技术保护点】
1.一种基于共享内存的跨进程通信方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一进程标识以及预设的目标槽位读写规则从多个进程所共享的环形队列中确定第一槽位队列之前,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标写入槽位执行所述目标写入请求的写入操作,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标读取槽位执行所述目标读取请求的读取操作,包括:
5.根据权利要求1所述的方法,其特征在于,所述根据所述第一槽位队列中各槽位的读写标志位从所述第一槽位队列中确定目标写入槽位,包括:
6.根据权利要求5所述的方法,其特征在于,所述判断所述第一槽位队列中是否存在读写标识位为可写的候选槽位之后,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述基于预设的槽位临时调整策略对所述第一槽位队列以及所述相邻槽位队列的槽位进行临时调整之后,所述方法还包括:
8.一种基于共享内存的跨进程通信装置,其特征在于,包括:
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的基于共享内存的跨进程通信方法。
...【技术特征摘要】
1.一种基于共享内存的跨进程通信方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一进程标识以及预设的目标槽位读写规则从多个进程所共享的环形队列中确定第一槽位队列之前,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标写入槽位执行所述目标写入请求的写入操作,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标读取槽位执行所述目标读取请求的读取操作,包括:
5.根据权利要求1所述的方法,其特征在于,所述根据所述第一槽位队列中各槽位的读写标志位从所述第一槽位队列中确定目标写入槽位,包括:
6.根据权利要求5所述的方法,其特征在于,所述判断所述第一槽位队列中是否存在读...
【专利技术属性】
技术研发人员:闫红智,赵楠,张卫,
申请(专利权)人:深圳华锐分布式技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。