一种进程间的通信方法、系统、设备及存储介质技术方案

技术编号:34808918 阅读:18 留言:0更新日期:2022-09-03 20:17
本申请公开了一种进程间的通信方法、系统、设备及存储介质,应用于通信技术领域,当应用于生产者进程中时,包括:确定出待写入数据;按照操作系统所支持的原子数据类型,以无锁队列的方式,将待写入数据写入预设的共享内存中,以使得消费者进程在命中共享内存时,从共享内存中读取消费者进程命中的数据。应用本申请的方案,可以有效地实现单机的进程间通信,同时有效地降低了单机的进程间通信的延迟。同时有效地降低了单机的进程间通信的延迟。同时有效地降低了单机的进程间通信的延迟。

【技术实现步骤摘要】
一种进程间的通信方法、系统、设备及存储介质


[0001]本专利技术涉及通信
,特别是涉及一种进程间的通信方法、系统、设备及存储介质。

技术介绍

[0002]计算机的运算速度几乎一直在以摩尔定律的速度增长,但是近年来,计算机的算力增长主要依靠的是单台计算机中的CPU核心数的增加。对于高吞吐量的场景而言,这样的方式是比较合适的,然而,对于低延迟要求的场景而言,增加CPU核心数能够带来的性能提升十分有限。
[0003]目前,当延迟低于10ms,甚至低于1ms时,认为达到了超低延迟的标准。在多进程通信方面,目前有很多成熟的技术,例如IPC(Inter

Process Communication,进程间通信)/Socket(套接字)/消息队列的方式。目前的单机方案中,延迟普遍在1ms到10ms,因为进程间的通信需要经过多次的数据复制和操作系统内核的调用。此外,还有很多的消息中间件可以用于实现多机之间的通信,由于是跨机器,因此延迟普遍在5ms

50ms之间。
[0004]综上所述,如何进一步地降低单机的进程间通信的延迟,是目前本领域技术人员急需解决的技术问题。

技术实现思路

[0005]本专利技术的目的是提供一种进程间的通信方法、系统、设备及存储介质,以有效地实现单机的进程间的通信,并且降低单机的进程间通信的延迟。
[0006]为解决上述技术问题,本专利技术提供如下技术方案:
[0007]一种进程间的通信方法,应用于生产者进程中,包括:
[0008]确定出待写入数据;
[0009]按照操作系统所支持的原子数据类型,以无锁队列的方式,将所述待写入数据写入预设的共享内存中,以使得消费者进程在命中所述共享内存时,从所述共享内存中读取所述消费者进程命中的数据。
[0010]优选的,所述共享内存为采用循环队列的共享内存,相应的,所述将所述待写入数据写入预设的共享内存中,包括:
[0011]读取当前的指针位置;
[0012]从读取的当前的所述指针位置开始,将所述待写入数据写入预设的共享内存中;
[0013]在完成写入之后,进行指针位置的更新。
[0014]优选的,所述共享内存设置为内存对齐的模式。
[0015]优选的,所述共享内存为预先分配的连续的内存片段,以使所述生产者进程进行流水线操作。
[0016]优选的,所述生产者进程确定出的待写入数据,为通过繁忙轮询规则确定出的待写入数据;
[0017]其中,所述繁忙轮询规则为基于各数据的使用频率确定出待写入数据的规则。
[0018]优选的,所述生产者进程采用单生产者进程多消费者进程的广播模式,以使各个消费者进程中的任意1个在命中所述共享内存时,从所述共享内存中读取所述消费者进程命中的数据。
[0019]一种进程间的通信方法,应用于消费者进程中,包括:
[0020]确定出待读取数据是否命中了预设的共享内存;
[0021]如果是,则从所述共享内存中读取所述待读取数据;
[0022]其中,共享内存中的数据为生产者进程在确定出待写入数据之后,按照操作系统所支持的原子数据类型,以无锁队列的方式,写入至所述共享内存中的数据。
[0023]一种进程间的通信系统,包括:
[0024]生产者进程,用于确定出待写入数据,按照操作系统所支持的原子数据类型,以无锁队列的方式,将所述待写入数据写入预设的共享内存中;
[0025]所述共享内存;
[0026]消费者进程,用于确定出待读取数据是否命中了预设的共享内存,如果是,则从所述共享内存中读取所述待读取数据。
[0027]一种进程间的通信设备,包括:
[0028]存储器,用于存储计算机程序;
[0029]处理器,用于执行所述计算机程序以实现如上述所述的进程间的通信方法的步骤。
[0030]一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的进程间的通信方法的步骤。
[0031]应用本专利技术实施例所提供的技术方案,考虑到单机的进程间通信最快的方式是共享内存,因此,生产者进程确定出待写入数据之后,会将待写入数据写入预设的共享内存中,以有效地降低本申请方案中的进程间的通信延迟。而消费者进程在命中共享内存时,便可以从共享内存中读取消费者进程命中的数据,即本申请的方案有效地实现了进程间的通信。并且,考虑到传统方案中进行进程间通信时,采用有锁队列的方式虽然有利于保障数据的准确性,但会增加进程间通信的延迟,对此,本申请可以按照操作系统所支持的原子数据类型,使用无锁队列的方式,将待写入数据写入预设的共享内存中。由于是原子操作,因此即便使用无锁队列的方式,也不会影响数据的准确性,即不会出现数据未完全写入时便被消费者进程读走的情况,而使用无锁队列的方式进一步地降低了本申请方案的进程间的通信延迟。综上所述,本申请的方案可以有效地实现单机的进程间通信,同时有效地降低了单机的进程间通信的延迟。
附图说明
[0032]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033]图1为本专利技术中一种应用于生产者进程中的进程间的通信方法的实施流程图;
[0034]图2为本专利技术中一种具体实施方式中采用单生产者进程多消费者进程的广播模式的逻辑示意图;
[0035]图3为本专利技术中一种应用于消费者进程中的进程间的通信方法的实施流程图;
[0036]图4为本专利技术中一种进程间的通信系统的结构示意图。
具体实施方式
[0037]本专利技术的核心是提供一种进程间的通信方法,可以有效地实现单机的进程间通信,同时有效地降低了单机的进程间通信的延迟。
[0038]为了使本
的人员更好地理解本专利技术方案,下面结合附图和具体实施方式对本专利技术作进一步的详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0039]请参考图1,图1为本专利技术中一种进程间的通信方法的实施流程图,该进程间的通信方法应用于生产者进程中,可以包括以下步骤:
[0040]步骤S101:确定出待写入数据。
[0041]具体的,生产者进程确定出待写入数据的具体方式可以有多种,可以根据实际需要进行设定和选取,但可以理解的是,由于生产者进程需要将确定出的待写入数据写入至预设的共享内存中,因此通常而言,生产者进程确定出的待写入数据,应当是没有在共享内存中存储的数据。
[0042]例如,在本专利技术的一种具体实施方式中,生产者进程可以按照常本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种进程间的通信方法,其特征在于,应用于生产者进程中,包括:确定出待写入数据;按照操作系统所支持的原子数据类型,以无锁队列的方式,将所述待写入数据写入预设的共享内存中,以使得消费者进程在命中所述共享内存时,从所述共享内存中读取所述消费者进程命中的数据。2.根据权利要求1所述进程间的通信方法,其特征在于,所述共享内存为采用循环队列的共享内存,相应的,所述将所述待写入数据写入预设的共享内存中,包括:读取当前的指针位置;从读取的当前的所述指针位置开始,将所述待写入数据写入预设的共享内存中;在完成写入之后,进行指针位置的更新。3.根据权利要求1所述进程间的通信方法,其特征在于,所述共享内存设置为内存对齐的模式。4.根据权利要求1所述进程间的通信方法,其特征在于,所述共享内存为预先分配的连续的内存片段,以使所述生产者进程进行流水线操作。5.根据权利要求1所述进程间的通信方法,其特征在于,所述生产者进程确定出的待写入数据,为通过繁忙轮询规则确定出的待写入数据;其中,所述繁忙轮询规则为基于各数据的使用频率确定出待写入数据的规则。6.根据权利要求1至5任一项所述进程间的通信方法,其特征在于,所述生产者进程采用单生产者进程多消费者...

【专利技术属性】
技术研发人员:孙伟
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1