CN109508241B - 一种进程间数据交换方法 - Google Patents
一种进程间数据交换方法 Download PDFInfo
- Publication number
- CN109508241B CN109508241B CN201811379988.1A CN201811379988A CN109508241B CN 109508241 B CN109508241 B CN 109508241B CN 201811379988 A CN201811379988 A CN 201811379988A CN 109508241 B CN109508241 B CN 109508241B
- Authority
- CN
- China
- Prior art keywords
- data
- queue
- space
- length
- tail
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明公开了一种进程间数据交换方法,属于计算机软件开发技术领域。本发明针对计算机软件进程间数据交换问题,提出了一种基于共享内存和循环队列的高效进程间数据交换方法。该方法首先在内存上开辟一段共享空间,各进程可通过指定标识符访问该内存空间;然后在该共享内存空间上设计了一个循环队列数据结构,该数据结构内部使用数组进行存储,数据操作采用内存块拷贝以提高效率;同时,对数据结构中的临界变量添加互斥锁,以确保并发使用时数据的安全性;最后,为循环队列添加“添加数据”、“取出数据”等操作。本发明为计算机软件进程间数据交换提供了一种高效可行的思路与方法。
Description
技术领域
本发明属于计算机软件开发技术领域,特别是指一种进程间数据交换方法。
背景技术
传统的软件为单进程(单个可执行程序)多线程模式,进程内所有存储空间基于同一起始内存地址,且只可被本进程访问。但随着近年来人工智能技术、数据挖掘技术的快速发展,以及多核中央处理器、GPU运算的普及,多线程已经无法胜任处理需求。因此,开发者转而将软件设计为单终端多服务模式。在该模式下,每一终端和服务皆为独立进程,不同进程间需要协同完成工作,因此会产生大量数据交换需求,这就需要一种高效的进程间数据交换方法。
为实现进程间数据交换,需要解决三方面问题:第一,进程间通信问题;第二,数据结构问题;第三,数据存取方式问题。
针对第一个问题,即进程间通信问题,当前的解决方式主要有管道、信号、消息、共享内存、信号量、套接字等几种技术手段。
针对第二个问题,即数据结构问题,当前常见的数据结构主要有数组、链表、栈、队列、树、堆、散列表等几种形式。
针对第三个问题,即数据存取问题,根据不同的数据结构可分为循环直接赋值、循环迭代赋值、块拷贝等几种方式。
尽管有上述这些现有技术能够实现进程间的数据交换,但是,当前对于进程间数据交换的方法都不够系统全面,数据交换的效率还有进一步提升的空间。
发明内容
有鉴于此,本发明提出一种基于共享内存和循环队列的高效进程间数据交换方法,该方法将进程间通信技术和数据结构进行结合和优化,能够提高进程间数据交换的效率。
为了实现上述目的,本发明所采用的技术方案是:
一种进程间数据交换方法,其特征在于,包括:开辟共享空间的步骤、向共享空间中添加数据的步骤、从共享空间中取出数据的步骤、从共享空间中删除数据的步骤以及销毁共享空间的步骤;
所述共享空间的逻辑存储结构为循环队列,物理存储结构为存储在内存连续空间上的数组,所述循环队列的临界区添加有互斥锁;
所述向共享空间中添加数据步骤的具体方式为:
(A1)锁定临界区;
(A2)判断待添加数据的长度L-in是否大于内存空间总长度L-total;若是,则将待添加数据中最后L-total长度的数据存入循环队列,舍弃待添加数据中的其他数据;若否,则执行步骤(A3);
(A3)判断循环队列的剩余空间是否足够存放待添加数据;若是,则从逻辑存储结构上,将待添加数据从队尾开始添加进循环队列;若否,则从逻辑存储结构上,将待添加数据从队尾开始添加进循环队列,直到循环队列的队尾与队头重合,然后,在队头处删除数据以作为新的队尾,并在新的队尾处继续添加数据,直至所有数据添加完成;
(A4)重新计算队头、队尾位置,解锁临界区;
所述从共享空间中取出数据步骤的具体方式为:
(B1)锁定临界区;
(B2)判断待取出数据的长度是否大于当前数据长度,若大于,则取出当前全部数据,否则,按待取出数据的长度读取数据;
(B3)判断取出数据的长度是否会引起物理存储区域末尾到起始的跨越;若是,则将取出数据分成两次进行块拷贝,第一次拷贝队头到物理存储区域末尾的数据,第二次从物理存储区域起始拷贝剩余长度的数据;否则,直接将所有待取出数据拷贝出来;
(B4)判断是否将取出的数据保留在循环队列中;若否,则重新计算队头、队尾位置,并计算循环队列中当前数据个数和剩余空间长度;若是,则不对循环队列做任何改变;
(B5)解锁临界区,并返回实际取出的数据长度;
所述从共享空间中删除数据步骤的具体方式为:
(C1)锁定临界区;
(C2)根据待删除数据的长度将队头后移;
(C3)重新计算循环队列的当前数据长度和剩余空间长度;
(C4)解锁临界区;
所述销毁共享空间步骤的具体方式为:
(D1)等待当前进程的所有操作完成;
(D2)断开当前进程与共享空间的连接;
(D3)判断共享空间是否还存在与其连接的其他进程,若没有,则注销该共享空间区域;若有,则不做销毁。
具体的,所述步骤(A3)中,在队尾处添加数据时,判断队尾到实际内存空间尾是否有足够的空间,若有,则直接以块拷贝方式添加数据;否则,先拷贝队尾到实际内存空间尾长度的数据,然后再从实际内存空间头开始拷贝剩余数据。
本发明与现有技术相比的有益效果为:
现有的进程间通信技术有些只提供了可跨进程访问的方式,但对数据的存储、操作都未进行设计,不够便捷;有些为了开发便捷使用链表作为队列的载体,存取效率低下;有些不支持并发使用。并且,大多数进程间通信技术都需要考虑数据溢出的保护。
本发明通过将进程间通信技术与数据结构进行结合和优化,有效地避免或解决了上述问题,从而使进程间通信更加安全、高效,使软件开发更加便捷。
附图说明
图1是本发明方法的流程图;
图2是本发明方法中数组(物理存储结构)示意图;
图3是本发明方法中循环队列(逻辑存储结构)示意图;
图4是本发明方法中“初始化”操作的流程图;
图5是本发明方法中“添加数据”操作的流程图;
图6是本发明方法中“取出数据”操作的流程图;
图7是本发明方法中“删除数据”操作的流程图;
图8是本发明方法中“销毁”操作的流程图。
具体实施方式
以下结合附图和具体实施方式对本发明做进一步的详细说明。
一种进程间数据交换方法,其流程如图1所示。
该方法的基本步骤如下:
A.通过“初始化”操作开辟共享内存区域,作为数据交换缓冲区。
该缓冲区在物理存储上使用数组结构,即连续内存地址空间,如图2所示。该缓冲区逻辑存储上使用循环队列结构,即首尾相接的先入先出队列,如图3所示。
其中,“初始化”操作的实现方法如图4所示。“初始化”操作通过连接标识符,检测是否已存在对应的共享内存区域。如果已存在,则表明已有进程在进行数据交换,只需将本进程连接到该标识符对应的共享内存区域;如果不存在,则先创建共享内存区域,再将本进程连接到共享内存区域。
B.通过“添加数据”、“取出数据”和“删除数据”操作,完成进程间数据交换。
a)“添加数据”操作的实现方法如图5所示,详细说明如下:首先,锁定临界区,以防止并发处理时出现不可预知的情况。
然后,判断输入数据长度(设为L-in)是否大于内存空间总长度(设为L-total)。如果是,则表示当前内存空间不足以存放全部添加的数据,那么循环队列将只保留输入数据中,最后L-total长度的数据,舍弃之前的数据;如果否,则向下进行。
之后,判断循环队列剩余空间是否足够存放要添加数据。如果是,则从逻辑存储结构上,将数据从队尾开始添加进循环队列;如果否,则从逻辑存储结构上,将数据从队尾开始添加进循环队列,直到队尾与队头重合,队尾继续添加数据,同时队头删除数据,即队尾“顶着”队头走。而从物理存储上来看,存在实际内存空间末尾到起始的跨越问题。因此需要在逻辑添加的时候对跨越进行特殊处理,即当队列尾到实际内存空间尾足够添加数据时,直接块拷贝添加数据;当队列尾到实际内存空间尾不够添加数据时,先拷贝队列尾到实际内存空间尾长度的数据,再从内存空间头拷贝剩余数据。在数据拷贝完之后,需重新计算队头、队尾位置。对不同逻辑分支分别设计后,发现循环队列剩余空间无论是否足够存放要添加数据,从物理存储结构上看,所进行数据拷贝的操作都是基本相同的,只有最后队头、队尾的计算部分略有不同。因此,将数据拷贝步骤抽象归并为同一操作,而队头、队尾计算按不同分支做对应处理。
最后,解锁临界区。
b)“取出数据”操作的实现方法如图6所示,详细说明如下:首先,锁定临界区,以防止并发处理时出现不可预知的情况。
然后,判断取出长度是否大于当前数据长度,若大于,则取出当前全部数据,若不大于,则按要求长度取数。之后,需要考虑取出数据长度是否会引起物理存储区域末尾到起始的跨越。如果引起跨越,则同“添加数据”操作一样,将取出数据分成两次块拷贝,第一次拷贝队头到物理存储区域末尾的数据,第二次从物理存储区域起始拷贝剩余长度的数据;如果未引起跨越,则直接一次将所有待取出数据拷贝到输出数据缓冲。
传统的队列(或循环队列)在取出数据后,会将队头指针后移,即从队列中删除已取出的数据。但在实际应用中,有些特殊情况(比如串口通信中,数据分包发送,需要取出数据并判断是否已接收到全部数据帧,只在收全后才能进行后续处理并删除数据)需要暂时将数据保留在队列中。因此,本发明在“取出数据”中添加了是否将已取出数据从队列中移除标志,如果该标志为真(即移除数据),则取出数据后计算队列头、尾位置,并计算队列中当前数据个数和剩余空间长度;如果该标志为假(即保留数据),则“取出数据”操作不对循环队列做任何改变,只是将指定数据拷贝到输出缓冲区。
最后,解锁临界区,并返回实际取出数据个数。
c)“删除数据”操作的实现方法如图7所示,详细说明如下:首先,锁定临界区,以防止并发处理时出现不可预知的情况。
然后,将队列头后移指定长度。
之后,计算循环队列当前数据个数和剩余空间长度。
最后,解锁临界区。
C.在所有操作都完成后,使用“销毁”操作,施放缓冲区。“销毁”操作的实现方法如图8所示。首先,等待所有操作完成。然后,断开本进程与共享内存的连接。最后,判断该共享内存是否还有其他连接的进程,若没有,则注销该共享内存区域;若有,则不做销毁。
一般来说,为实现进程间数据交换,需要解决三方面问题:第一,进程间通信问题;第二,数据结构问题;第三,数据存取方式问题。
针对第一个问题,即进程间通信问题,当前可使用的方式方法主要有以下几种:
1)管道
管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
2)信号
信号是用于进程间互相通信或者操作的一种机制,信号可以在任何时候发给某一进程,而无需知道该进程的状态。如果该进程当前并未处于执行状态,则该信号就有内核保存起来,直到该进程恢复执行并传递给它为止。如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程。信号是软件层次上对中断机制的一种模拟,是一种异步通信方式。
3)消息
消息队列是存放在内核中的消息链表,每个消息队列由消息队列标识符表示。发送方将所要发送的消息添加进消息链表,并指明接收方,内核即将该消息发送给接收方。
4)共享内存
共享内存使得多个进程可以直接读写同一块内存空间,是最快的进程间通信形式。为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就可以直接读写这一块内存而不需要进行数据的拷贝,从而大大提高效率。由于多个进程共享一段内存,因此需要依靠某种同步机制(如信号量)来达到进程间的同步及互斥。
5)信号量
信号量是一个计数器,用于多进程对共享数据的访问。信号量常用于进程间同步。
6)套接字
套接字是一种网络通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在网络上进行,也可将本地单机当作一个内部网络,在本地单机上进行。
针对第二个问题,即数据结构问题,当前常见数据结构主要有以下几种:
1)数组
数组数据结构,简称数组,是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引可以计算出该元素对应的存储地址。
2)链表
链表是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
3)栈
栈是一种特殊的串列形式的抽象数据类型,其特殊之处在于只能允许在链表或数组的一端进行添加数据和取出数据的操作。由于栈数据结构只允许在一端进行操作,因而按照后进先出的原理运作。
4)队列
队列是一种先进先出的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端进行插入操作,在前端进行删除操作。
5)树
树是一种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。
6)堆
堆是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。
7)散列表
散列表(又名哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
针对第三个问题,即数据存取问题,根据不同的数据结构可分为以下3种:
1)循环直接赋值
针对可直接通过指定位置访问元素的数据结构,可通过循环方式逐个更新指定位置上的值。
2)循环迭代赋值
针对只能通过指针查找前后元素的数据结构,即不可直接通过指定位置访问元素的数据结构,需要每次赋值时都从首元素迭代查找指定位置的元素,再对其赋值。
3)块拷贝
针对物理存储空间在内存上连续,且物理存储顺序与逻辑存储吮吸相同的数据结构,可采用数据块拷贝,将插入数据块一次覆盖到指定位置。块拷贝在各种编程语言中皆可享受编译器优化,执行效率远高于循环直接赋值。
目前,已有的进程间通信技术有些只提供了可跨进程访问的方式,但对数据的存储、操作都未进行设计,不够便捷;有些为了开发便捷使用链表作为队列的载体,存取效率低下;有些不支持并发使用。并且,大多数进程间通信技术都需要考虑数据溢出的保护。
本发明通过将进程间通信技术与数据结构进行结合和优化,有效地避免或解决了上述问题,从而使进程间通信更加安全、高效,使软件开发更加便捷。
Claims (2)
1.一种进程间数据交换方法,其特征在于,包括:开辟共享空间的步骤、向共享空间中添加数据的步骤、从共享空间中取出数据的步骤、从共享空间中删除数据的步骤以及销毁共享空间的步骤;
所述共享空间的逻辑存储结构为循环队列,物理存储结构为存储在内存连续空间上的数组,所述循环队列的临界区添加有互斥锁;
所述向共享空间中添加数据步骤的具体方式为:
(A1)锁定临界区;
(A2)判断待添加数据的长度L-in是否大于所述内存连续空间的总长度L-total;若是,则将待添加数据中最后L-total长度的数据存入循环队列,舍弃待添加数据中的其他数据;若否,则执行步骤(A3);
(A3)判断循环队列的剩余空间是否足够存放待添加数据;若是,则从逻辑存储结构上,将待添加数据从队尾开始添加进循环队列;若否,则从逻辑存储结构上,将待添加数据从队尾开始添加进循环队列,直到循环队列的队尾与队头重合,然后,在队头处删除数据以作为新的队尾,并在新的队尾处继续添加数据,直至所有数据添加完成;
(A4)重新计算队头、队尾位置,解锁临界区;
所述从共享空间中取出数据步骤的具体方式为:
(B1)锁定临界区;
(B2)判断待取出数据的长度是否大于当前数据长度,若大于,则取出当前全部数据,否则,按待取出数据的长度读取数据;
(B3)判断取出数据的长度是否会引起物理存储区域末尾到起始的跨越;若是,则将取出数据分成两次进行块拷贝,第一次拷贝队头到物理存储区域末尾的数据,第二次从物理存储区域起始拷贝剩余长度的数据;否则,直接将所有待取出数据拷贝出来;
(B4)判断是否将取出的数据保留在循环队列中;若否,则重新计算队头、队尾位置,并计算循环队列中当前数据个数和剩余空间长度;若是,则不对循环队列做任何改变;
(B5)解锁临界区,并返回实际取出的数据长度;
所述从共享空间中删除数据步骤的具体方式为:
(C1)锁定临界区;
(C2)根据待删除数据的长度将队头后移;
(C3)重新计算循环队列的当前数据长度和剩余空间长度;
(C4)解锁临界区;
所述销毁共享空间步骤的具体方式为:
(D1)等待当前进程的所有操作完成;
(D2)断开当前进程与共享空间的连接;
(D3)判断共享空间是否还存在与其连接的其他进程,若没有,则注销该共享空间区域;若有,则不做销毁。
2.根据权利要求1所述的进程间数据交换方法,其特征在于:所述步骤(A3)中,在队尾处添加数据时,判断队尾到实际内存空间尾是否有足够的空间,若有,则直接以块拷贝方式添加数据;否则,先拷贝队尾到实际内存空间尾长度的数据,然后再从实际内存空间头开始拷贝剩余数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811379988.1A CN109508241B (zh) | 2018-11-20 | 2018-11-20 | 一种进程间数据交换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811379988.1A CN109508241B (zh) | 2018-11-20 | 2018-11-20 | 一种进程间数据交换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109508241A CN109508241A (zh) | 2019-03-22 |
CN109508241B true CN109508241B (zh) | 2021-04-20 |
Family
ID=65749140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811379988.1A Active CN109508241B (zh) | 2018-11-20 | 2018-11-20 | 一种进程间数据交换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109508241B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003413B (zh) * | 2021-12-30 | 2022-04-26 | 深圳佑驾创新科技有限公司 | 一种ipc数据通信方法、装置、设备及介质 |
CN114945009B (zh) * | 2022-02-24 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | PCIe总线连接的设备间进行通信的方法、设备及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013142273A1 (en) * | 2012-03-19 | 2013-09-26 | Citrix Systems, Inc. | Systems and methods for providing user interfaces for management applications |
CN103731328A (zh) * | 2014-01-02 | 2014-04-16 | 烽火通信科技股份有限公司 | 基于Linux共享内存实现家庭网关数据通信的系统及方法 |
CN104636210A (zh) * | 2013-11-07 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 一种实现进程间数据交换的方法及装置 |
CN107992368A (zh) * | 2017-11-15 | 2018-05-04 | 国家计算机网络与信息安全管理中心 | 一种多进程间的数据交换方法和系统 |
-
2018
- 2018-11-20 CN CN201811379988.1A patent/CN109508241B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013142273A1 (en) * | 2012-03-19 | 2013-09-26 | Citrix Systems, Inc. | Systems and methods for providing user interfaces for management applications |
CN104636210A (zh) * | 2013-11-07 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 一种实现进程间数据交换的方法及装置 |
CN103731328A (zh) * | 2014-01-02 | 2014-04-16 | 烽火通信科技股份有限公司 | 基于Linux共享内存实现家庭网关数据通信的系统及方法 |
CN107992368A (zh) * | 2017-11-15 | 2018-05-04 | 国家计算机网络与信息安全管理中心 | 一种多进程间的数据交换方法和系统 |
Non-Patent Citations (2)
Title |
---|
Docker容器间高速数据交换方法研究;陆文龙;《中国优秀硕士学位论文全文数据库信息科技辑》;20180315(第3期);第I139-273页 * |
Lockless Circular Buffer over Shared Memory (High Speed Data Transfer via Shared Memory);shubhadip paul等;《2013 International Conference on Advanced Computing and Communication Systems》;20131221;第1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109508241A (zh) | 2019-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635419B2 (en) | Incremental compilation of finite automata for a regular expression accelerator | |
US8539199B2 (en) | Hash processing in a network communications processor architecture | |
US10693787B2 (en) | Throttling for bandwidth imbalanced data transfers | |
US7509463B2 (en) | Cell processor atomic compare and swap using dedicated synergistic processor element | |
US10983721B2 (en) | Deterministic finite automata node construction and memory mapping for regular expression accelerator | |
US20130268770A1 (en) | Cryptographic hash database | |
US11860861B2 (en) | Growing dynamic shared memory hash table | |
US20100198920A1 (en) | High performant information sharing and replication for single-publisher and multiple-subscriber configuration | |
CN105684020B (zh) | 硬件平台中的订单账簿管理设备 | |
JP2014531687A (ja) | ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 | |
US11537453B2 (en) | Multithreaded lossy queue protocol | |
CN103218176A (zh) | 数据处理方法及装置 | |
CN109508241B (zh) | 一种进程间数据交换方法 | |
CN104394096A (zh) | 一种基于多核处理器的报文处理方法及多核处理器 | |
CN105793835B (zh) | 用于支持计算环境中的i/o虚拟化的系统和方法 | |
US11392314B2 (en) | Sequentially writing metadata into a solid state disk by redirect-on-write | |
US8380923B2 (en) | Queue arrays in network devices | |
CN108139882A (zh) | 针对网络装置实施阶层分布式链接列表的系统及方法 | |
US10031859B2 (en) | Pulse counters | |
US10101963B2 (en) | Sending and receiving data between processing units | |
US20200341764A1 (en) | Scatter Gather Using Key-Value Store | |
US10379899B2 (en) | Systems and methods for frame presentation and modification in a networking environment | |
CN114365109A (zh) | 启用rdma的键-值存储库 | |
CN113377549B (zh) | 一种队列数据控制方法、系统及队列数据结构 | |
US20090083499A1 (en) | Ordered Storage Structure Providing Enhanced Access to Stored Items |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |