CN114265716A - 一种多进程间无锁队列的实现方法、装置、设备及介质 - Google Patents

一种多进程间无锁队列的实现方法、装置、设备及介质 Download PDF

Info

Publication number
CN114265716A
CN114265716A CN202111584031.2A CN202111584031A CN114265716A CN 114265716 A CN114265716 A CN 114265716A CN 202111584031 A CN202111584031 A CN 202111584031A CN 114265716 A CN114265716 A CN 114265716A
Authority
CN
China
Prior art keywords
data
lock
free queue
length
head
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111584031.2A
Other languages
English (en)
Inventor
蔡福杰
范渊
刘博�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202111584031.2A priority Critical patent/CN114265716A/zh
Publication of CN114265716A publication Critical patent/CN114265716A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种多进程间无锁队列的实现方法、装置、设备及介质,该方法包括:通过Linux API创建进程间共享内存;将共享内存转换为无锁队列;创建TX进程和RX进程;TX进程和RX进程使用shm_key和shm_len挂载共享内存;通过TX进程将数据的长度和数据本身写入无锁队列中;通过RX进程读取数据的长度,再根据数据的长度读取数据本身。这样使用基于共享内存的无锁队列可以大幅度提高进程间数据通信性能,提升数据传输效率,且每次写入和读取数据,可以合理利用每一块内存,提高内存使用率。

Description

一种多进程间无锁队列的实现方法、装置、设备及介质
技术领域
本发明涉及网络流量处理领域,特别是涉及一种多进程间无锁队列的实现方法、装置、设备及介质。
背景技术
在网络流量处理领域中,数据处理往往都是多个进程完成的,每个进程处理不同的业务。而每个进程是需要传入数据,才能进行数据分析的。如何高效率地将数据在进程间传输,是流量处理领域的重要技术手段。但是数据传输延迟,丢失等都会直接反应在整个系统上,大大降低系统的分析能力。
目前,跨进程数据转发是经常使用的数据处理手段之一。进程间通信通常使用文件传输、Linux套接字、kafka消息队列等方式。这些方式均存在多次数据拷贝,且性能较低,需要分配更多的系统资源给数据转发,无法满足大流量场景对于数据高效传输的需求。
因此,如何解决多进程之间数据传输的系统资源占用较大,如对内存的利用率不足及数据传输效率不高的问题,是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种多进程间无锁队列的实现方法、装置、设备及介质,可以大幅度提高进程间数据通信性能,提升数据传输效率,提高内存使用率。其具体方案如下:
一种多进程间无锁队列的实现方法,包括:
通过Linux API创建进程间共享内存;
将所述共享内存转换为无锁队列;
创建TX进程和RX进程;所述TX进程和RX进程使用shm_key和shm_len挂载所述共享内存;
通过所述TX进程将数据的长度和数据本身写入所述无锁队列中;
通过所述RX进程读取数据的长度,再根据数据的长度读取数据本身。
优选地,在本发明实施例提供的上述多进程间无锁队列的实现方法中,将所述共享内存转换为无锁队列,包括:
将共享内存划分为ring_head和ring_data两块区域;所述ring_head用于存放无锁队列的控制数据;所述ring_data用于存放写入的数据块data_block。
优选地,在本发明实施例提供的上述多进程间无锁队列的实现方法中,所述ring_head和ring_data两块区域间隔64字节;
所述ring_head包含tx_head和rx_head两块区域,所述tx_head和rx_head两块区域间隔64字节;
所述ring_data的长度是64的整数倍。
优选地,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在将所述共享内存转换为无锁队列的同时,还包括:
记录无锁队列当前写数据的位置、无锁队列当前读数据的位置以及无锁队列上一次读数据的位置;所述无锁队列上一次读数据的位置初始化为无锁队列总长度减去64字节。
优选地,在本发明实施例提供的上述多进程间无锁队列的实现方法中,还包括:
当所述TX进程将数据写到无锁队列尾部时,执行回写判断;所述回写判断包括:
当无锁队列剩余长度大于写入数据总长度时,进行写入操作;所述写入数据总长度为数据的长度与data_head的本身长度之和;所述data_head用于存放数据的长度;
当所述无锁队列剩余长度小于所述写入数据总长度,且大于所述data_head的本身长度时,则将data_head保存的数据的长度写到无锁队列尾部,并跳转到无锁队列头部,进行写入操作;
当所述无锁队列剩余长度小于所述data_head的本身长度时,则直接跳转到无锁队列头部,进行写入操作。
优选地,在本发明实施例提供的上述多进程间无锁队列的实现方法中,还包括:
当所述RX进程读取到无锁队列尾部时,执行回读判断;所述回读判断包括:
当无锁队列当前读数据的位置与所述写入数据总长度之和小于等于无锁队列总长度,则进行读取操作;
当无锁队列当前读数据的位置与所述写入数据总长度之和大于所述无锁队列总长度,且所述无锁队列剩余长度大于数据的长度时,则直接跳转到无锁队列头部,并进行读取操作。
优选地,在本发明实施例提供的上述多进程间无锁队列的实现方法中,还包括:
处理数据时,直接访问读取的数据,不进行拷贝。
本发明实施例还提供了一种多进程间无锁队列的实现装置,包括:
共享内存创建模块,用于通过Linux API创建进程间共享内存;
队列初始化模块,用于将所述共享内存转换为无锁队列;
工作进程创建模块,用于创建TX进程和RX进程;所述TX进程和RX进程使用shm_key和shm_len挂载所述共享内存;
数据写入模块,用于通过所述TX进程将数据的长度和数据本身写入所述无锁队列中;
数据读取模块,用于通过所述RX进程读取数据的长度,再根据数据的长度读取数据本身。
本发明实施例还提供了一种多进程间无锁队列的实现设备,包括处理器和存储器,其中,所述处理器执行所述存储器中存储的计算机程序时实现如本发明实施例提供的上述多进程间无锁队列的实现方法。
本发明实施例还提供了一种计算机可读存储介质,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如本发明实施例提供的上述多进程间无锁队列的实现方法。
从上述技术方案可以看出,本发明所提供的一种多进程间无锁队列的实现方法,包括:通过Linux API创建进程间共享内存;将共享内存转换为无锁队列;创建TX进程和RX进程;TX进程和RX进程使用shm_key和shm_len挂载共享内存;通过TX进程将数据的长度和数据本身写入无锁队列中;通过RX进程读取数据的长度,再根据数据的长度读取数据本身。
本发明提供的上述多进程间无锁队列的实现方法,使用基于共享内存的无锁队列可以大幅度提高进程间数据通信性能,提升数据传输效率,且每次写入和读取数据,可以合理利用每一块内存,提高内存使用率。
此外,本发明还针对多进程间无锁队列的实现方法提供了相应的装置、设备及计算机可读存储介质,进一步使得上述方法更具有实用性,该装置、设备及计算机可读存储介质具有相应的优点。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的多进程间无锁队列的实现方法的流程图;
图2为本发明实施例提供的进程关系和无锁队列原理框图;
图3为本发明实施例提供的无锁队列写入和读取原理框图;
图4为本发明实施例提供的无锁队列回写判断和回读判断的原理框图;
图5为本发明实施例提供的多进程间无锁队列的实现装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种多进程间无锁队列的实现方法,如图1所示,包括以下步骤:
S101、通过Linux API创建进程间共享内存;
具体地,首先启动主进程,记为MAIN;然后主进程MAIN通过Linux API创建进程间共享内存,具体使用地址shm_key和长度shm_len,创建Linux共享内存。例如使用地址0x00011110和长度(1024MB+256B+64B),创建Linux共享内存。
S102、将共享内存转换为无锁队列;即初始化无锁队列(即环形队列)。
具体地,共享内存可划分为ring_head和ring_data两块区域;ring_head用于存放无锁队列的控制数据;ring_data用于存放写入的数据块data_block。
S103、创建TX进程和RX进程;TX进程和RX进程使用shm_key和shm_len挂载共享内存;
具体地,如图2所示,主进程MAIN分别创建TX进程和RX进程,这两个进程使用shm_key和shm_len挂载主进程创建的共享内存,例如这两个进程使用相同的地址0x00011110和长度(1024MB+256B+64B)挂载主进程创建的共享内存。同时可以访问到初始化完成的ring_head和ring_data。
S104、通过TX进程将数据的长度和数据本身写入无锁队列中;
S105、通过RX进程读取数据的长度,再根据数据的长度读取数据本身。
在本发明实施例提供的上述多进程间无锁队列的实现方法中,使用基于共享内存的无锁队列可以大幅度提高进程间数据通信性能,提升数据传输效率,且每次写入和读取数据,可以合理利用每一块内存,提高内存使用率。
在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,步骤S102将共享内存转换为无锁队列,具体可以包括:将共享内存划分为ring_head和ring_data两块区域。较佳地,ring_head和ring_data两块区域间隔64B;ring_head包含tx_head和rx_head两块区域,tx_head和rx_head两块区域间隔64B;ring_head的长度可以为256B;ring_data的长度是64的整数倍,如1024MB。
在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在执行步骤S102将共享内存转换为无锁队列的同时,还可以包括:记录无锁队列当前写数据的位置、无锁队列当前读数据的位置以及无锁队列上一次读数据的位置;无锁队列上一次读数据的位置初始化为无锁队列总长度减去64B。
具体地,tx_head包含pos_tx,表示无锁队列当前写数据的位置,初始化为0;rx_head包含pos_rx,表示无锁队列当前读数据的位置,初始化为0;rx_head还包含pos_lrx,表示无锁队列上一次读数据的位置,例如初始化为1024MB-64B;pos_lrx初始值设置为rx_data长度减64,例如初始化为1024MB-64B。
在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在执行步骤S104通过TX进程将数据的长度和数据本身写入无锁队列中的过程中,可以包括:
在TX进程工作时传输数据data时,则将长度为data_len的data写入无锁队列中,如图3所示,具体写入无锁队列的方式如下:
步骤一、每次写入两块数据,一块记为data_head,一块记为data_block。data_head用于存放传输数据的长度data_len(如64B);data_block用于存放传输数据data。较佳地,data_head的本身长度可以为4B。
步骤二、当pos_tx等于pos_lrx,则返回队列已满。
步骤三、当pos_tx小于pos_lrx,表示写的位置在上一次读位置的前面。
步骤四、判断pos_tx、data_len(如64B)与data_head的本身长度(如4B)之和小于等于pos_lrx时,正常写入,否则返回队列已满。
步骤五、当pos_tx大于pos_lrx,表示写位置在上一次读位置的后面,将会写到队列尾部。
进一步地,在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在执行步骤S104通过TX进程将数据的长度和数据本身写入无锁队列中的过程中,如图4所示,还可以包括:
步骤六、当TX进程将数据写到无锁队列尾部时,执行回写判断;记队列剩余长度为remain_len,写入数据总长度为total_len=data_len(如64B)+data_head的本身长度(如4B);该回写判断包括:
当remain_len大于total_len时,正常写入;
当remain_len小于total_len,且大于data_head的本身长度(如4B)时,则将data_head保存的data_len写到无锁队列尾部,并跳转到无锁队列头部,之后参照步骤四进行正常写入;
当remain_len小于data_head的本身长度(如4B)时,则直接跳转到无锁队列头部,并参照步骤四进行正常写入。
写入成功后,需要更新无锁队列当前写数据的位置pos_tx。
上述方式可以实现回写判断,能减少大量的逻辑判断,从而提升数据传输效率。
在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在执行步骤S105通过RX进程读取数据的长度,再根据数据的长度读取数据本身的过程中,如图3所示,可以包括:
第一步、在RX进程工作时读取无锁队列的数据,先比较pos_rx和pos_tx的值;
第二步、当pos_rx等于pos_tx时,表示无锁队列中无数据,返回空;否则表示无锁队列中存在数据,可以进行读取操作;
读取数据时,先读取4字节data_len,计算此次读取的总长度为total_len=data_len+data_head的本身长度(如4B);
第三步、当pos_rx小于pos_tx时,正常读取数据;
第四步、当pos_rx大于pos_tx时,表示读位置在写位置的后面,将会读到队列尾部。
进一步地,在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在执行步骤S105通过RX进程读取数据的长度,再根据数据的长度读取数据本身的过程中,如图4所示,还可以包括:
第五步、当RX进程读取到无锁队列尾部时,执行回读判断;记队列剩余长度为remain_len,队列总长度记为ring_size;该回读判断包括:
当pos_rx与total_len之和小于等于ring_size,则正常读取数据;
当pos_rx与total_len之和大于ring_size,且remain_len大于data_len时,则直接跳转到无锁队列头部,并参照第一步进行正常读取数据。
读取成功后,需要更新无锁队列当前读数据的位置pos_rx和无锁队列上一次读数据的位置pos_lrx。
上述方式可以实现回读判断,能减少大量的逻辑判断,从而提升数据传输效率。
在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现方法中,在执行步骤S105之后,还可以包括:处理数据时,直接访问读取的数据,不进行拷贝。
需要注意的是,本发明每次记录上一次读取数据的方式,能保留最近一次读取的数据,即处理的数据位置为pos_rx,写入数据只会写到pos_lrx为止。不会将当前读取后需要处理的数据覆盖,因此可以仅靠内存访问,无需拷贝队列中数据的操作,直接处理指针指向的数据即可,大幅提升了RX进程的工作效率。
基于同一发明构思,本发明实施例还提供了一种多进程间无锁队列的实现装置,由于该装置解决问题的原理与前述一种多进程间无锁队列的实现方法相似,因此该装置的实施可以参见多进程间无锁队列的实现方法的实施,重复之处不再赘述。
在具体实施时,本发明实施例提供的多进程间无锁队列的实现装置,如图5所示,具体可以包括:
共享内存创建模块11,用于通过Linux API创建进程间共享内存;
队列初始化模块12,用于将共享内存转换为无锁队列;
工作进程创建模块13,用于创建TX进程和RX进程;TX进程和RX进程使用shm_key和shm_len挂载共享内存;
数据写入模块14,用于通过TX进程将数据的长度和数据本身写入无锁队列中;
数据读取模块15,用于通过RX进程读取数据的长度,再根据数据的长度读取数据本身。
在本发明实施例提供的上述多进程间无锁队列的实现装置中,可以通过上述五个模块的相互作用,大幅度提高进程间数据通信性能,提升数据传输效率,且每次写入和读取数据,能够合理利用每一块内存,提高内存使用率。
在具体实施时,在本发明实施例提供的上述多进程间无锁队列的实现装置中,还包括:
数据处理模块,用于处理数据时,直接访问读取的数据,不进行拷贝。
关于上述各个模块更加具体的工作过程可以参考前述实施例公开的相应内容,在此不再进行赘述。
相应地,本发明实施例还公开了一种多进程间无锁队列的实现设备,包括处理器和存储器;其中,处理器执行存储器中存储的计算机程序时实现前述实施例公开的多进程间无锁队列的实现方法。
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步地,本发明还公开了一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现前述公开的多进程间无锁队列的实现方法。
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备、存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
综上,本发明实施例提供的一种多进程间无锁队列的实现方法,包括:通过LinuxAPI创建进程间共享内存;将共享内存转换为无锁队列;创建TX进程和RX进程;TX进程和RX进程使用shm_key和shm_len挂载共享内存;通过TX进程将数据的长度和数据本身写入无锁队列中;通过RX进程读取数据的长度,再根据数据的长度读取数据本身。这样使用基于共享内存的无锁队列可以大幅度提高进程间数据通信性能,提升数据传输效率,且每次写入和读取数据,可以合理利用每一块内存,提高内存使用率。此外,本发明还针对多进程间无锁队列的实现方法提供了相应的装置、设备及计算机可读存储介质,进一步使得上述方法更具有实用性,该装置、设备及计算机可读存储介质具有相应的优点。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的多进程间无锁队列的实现方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种多进程间无锁队列的实现方法,其特征在于,包括:
通过Linux API创建进程间共享内存;
将所述共享内存转换为无锁队列;
创建TX进程和RX进程;所述TX进程和RX进程使用shm_key和shm_len挂载所述共享内存;
通过所述TX进程将数据的长度和数据本身写入所述无锁队列中;
通过所述RX进程读取数据的长度,再根据数据的长度读取数据本身。
2.根据权利要求1所述的多进程间无锁队列的实现方法,其特征在于,将所述共享内存转换为无锁队列,包括:
将共享内存划分为ring_head和ring_data两块区域;所述ring_head用于存放无锁队列的控制数据;所述ring_data用于存放写入的数据块data_block。
3.根据权利要求2所述的多进程间无锁队列的实现方法,其特征在于,所述ring_head和ring_data两块区域间隔64字节;
所述ring_head包含tx_head和rx_head两块区域,所述tx_head和rx_head两块区域间隔64字节;
所述ring_data的长度是64的整数倍。
4.根据权利要求3所述的多进程间无锁队列的实现方法,其特征在于,在将所述共享内存转换为无锁队列的同时,还包括:
记录无锁队列当前写数据的位置、无锁队列当前读数据的位置以及无锁队列上一次读数据的位置;所述无锁队列上一次读数据的位置初始化为无锁队列总长度减去64字节。
5.根据权利要求4所述的多进程间无锁队列的实现方法,其特征在于,还包括:
当所述TX进程将数据写到无锁队列尾部时,执行回写判断;所述回写判断包括:
当无锁队列剩余长度大于写入数据总长度时,进行写入操作;所述写入数据总长度为数据的长度与data_head的本身长度之和;所述data_head用于存放数据的长度;
当所述无锁队列剩余长度小于所述写入数据总长度,且大于所述data_head的本身长度时,则将data_head保存的数据的长度写到无锁队列尾部,并跳转到无锁队列头部,进行写入操作;
当所述无锁队列剩余长度小于所述data_head的本身长度时,则直接跳转到无锁队列头部,进行写入操作。
6.根据权利要求5所述的多进程间无锁队列的实现方法,其特征在于,还包括:
当所述RX进程读取到无锁队列尾部时,执行回读判断;所述回读判断包括:
当无锁队列当前读数据的位置与所述写入数据总长度之和小于等于无锁队列总长度,则进行读取操作;
当无锁队列当前读数据的位置与所述写入数据总长度之和大于所述无锁队列总长度,且所述无锁队列剩余长度大于数据的长度时,则直接跳转到无锁队列头部,并进行读取操作。
7.根据权利要求6所述的多进程间无锁队列的实现方法,其特征在于,还包括:
处理数据时,直接访问读取的数据,不进行拷贝。
8.一种多进程间无锁队列的实现装置,其特征在于,包括:
共享内存创建模块,用于通过Linux API创建进程间共享内存;
队列初始化模块,用于将所述共享内存转换为无锁队列;
工作进程创建模块,用于创建TX进程和RX进程;所述TX进程和RX进程使用shm_key和shm_len挂载所述共享内存;
数据写入模块,用于通过所述TX进程将数据的长度和数据本身写入所述无锁队列中;
数据读取模块,用于通过所述RX进程读取数据的长度,再根据数据的长度读取数据本身。
9.一种多进程间无锁队列的实现设备,其特征在于,包括处理器和存储器,其中,所述处理器执行所述存储器中存储的计算机程序时实现如权利要求1至7任一项所述的多进程间无锁队列的实现方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的多进程间无锁队列的实现方法。
CN202111584031.2A 2021-12-22 2021-12-22 一种多进程间无锁队列的实现方法、装置、设备及介质 Pending CN114265716A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111584031.2A CN114265716A (zh) 2021-12-22 2021-12-22 一种多进程间无锁队列的实现方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111584031.2A CN114265716A (zh) 2021-12-22 2021-12-22 一种多进程间无锁队列的实现方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN114265716A true CN114265716A (zh) 2022-04-01

Family

ID=80829711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111584031.2A Pending CN114265716A (zh) 2021-12-22 2021-12-22 一种多进程间无锁队列的实现方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN114265716A (zh)

Similar Documents

Publication Publication Date Title
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
CN111897498A (zh) 区块链数据的多级存储方法和装置
CN111309644B (zh) 一种内存分配方法、装置和计算机可读存储介质
CN109408243B (zh) 一种基于rdma的数据处理方法、装置和介质
CN112948149A (zh) 一种远端内存共享方法、装置、电子设备及存储介质
CN113032162B (zh) 一种基于共享内存备份机制的多进程通讯方法
CN109298888B (zh) 队列的数据存取方法及装置
US9021492B2 (en) Dual mode reader writer lock
CN112650449B (zh) 缓存空间的释放方法、释放系统、电子设备及存储介质
CN117492661A (zh) 数据写入方法、介质、装置和计算设备
CN114265716A (zh) 一种多进程间无锁队列的实现方法、装置、设备及介质
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
CN107203339B (zh) 一种数据存储方法及装置
CN107911317B (zh) 一种报文调度方法及装置
CN113672400A (zh) 一种数据处理方法、装置、设备及可读存储介质
CN111338567B (zh) 一种基于Protocol Buffer的镜像缓存方法
CN112231290A (zh) 一种本地日志的处理方法、装置、设备及存储介质
CN106776369B (zh) 一种缓存镜像的方法及装置
CN109491948B (zh) 一种针对固态硬盘双端口的数据处理方法和装置
CN109783021A (zh) 数据存储系统及数据存储、读取方法、装置、电子设备
CN117370047A (zh) 一种数据传输方法及系统
CN115622929B (zh) 远程直接数据存取rdma的测试方法及相关装置
CN109308247A (zh) 一种日志处理方法、装置、设备及一种网络设备
US7565395B2 (en) Mechanism for preserving session state when using an access-limited buffer
CN115129457A (zh) 一种任务处理方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination