CN104809028A - 一种本地多进程间数据订阅推送的方法 - Google Patents

一种本地多进程间数据订阅推送的方法 Download PDF

Info

Publication number
CN104809028A
CN104809028A CN201510228881.7A CN201510228881A CN104809028A CN 104809028 A CN104809028 A CN 104809028A CN 201510228881 A CN201510228881 A CN 201510228881A CN 104809028 A CN104809028 A CN 104809028A
Authority
CN
China
Prior art keywords
data
subscription
named pipes
memory
message
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.)
Granted
Application number
CN201510228881.7A
Other languages
English (en)
Other versions
CN104809028B (zh
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.)
Xiamen Yaxun Zhilian Technology Co ltd
Original Assignee
Xiamen Yaxon Networks 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 Xiamen Yaxon Networks Co Ltd filed Critical Xiamen Yaxon Networks Co Ltd
Priority to CN201510228881.7A priority Critical patent/CN104809028B/zh
Publication of CN104809028A publication Critical patent/CN104809028A/zh
Application granted granted Critical
Publication of CN104809028B publication Critical patent/CN104809028B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明提供一种本地多进程间数据订阅推送的方法,将系统中的不同的进程通过加载相同的ActiveX组件实现各个进程间的通信;所述ActiveX组件包括:内存映射注册订阅信息、命名事件、命名管道;命名事件是对进程通知事件进行命名,命名管道是对进程数据通信管道进行命名;通过内存映射将多个进程共享同一份注册订阅信息;通过命名事件在不同进程之间相互通知及时更新注册订阅信息;通过命名管道由数据提供者主动向订阅者建立管道链接并推送数据。本发明实现多个进程间的数据通信和数据共享,通用性高,灵活性好。特别适用于在不同系统进程之间的数据通信和数据共享,有效降低后台系统集成复杂度和数据重复访问获取的压力。

Description

一种本地多进程间数据订阅推送的方法
技术领域
本发明涉及通信技术领域,尤其涉及一种本地多进程间数据订阅推送的方法。
背景技术
跨进程通信技术是一种软件研发过程中常见的技术,被广泛的应用于实现系统中跨进程的数据通信和数据共享。而传统的进程间通信技术大多基于点对点通信,需要明确通信双方,通用性和灵活性较差,往往需要在两两进程之间分别开发进程通信程序,不仅增加了开发的复杂度,而且通用性和复用性也较差。
发明内容
本发明要解决的技术问题,在于提供一种本地多进程间数据订阅推送的方法,实现多个进程间的数据通信和数据共享,通用性高,灵活性好。
本发明是这样实现的:一种本地多进程间数据订阅推送的方法,将系统中的不同的进程通过加载相同的ActiveX组件实现各个进程间的通信;所述ActiveX组件包括:内存映射注册订阅信息、命名事件、命名管道;所述ActiveX组件之间通过内存映射实现注册、订阅信息的的共享,所述命名事件是对进程通知事件进行命名,所述命名管道是对进程数据通信管道进行命名;通过内存映射在多个进程间共享同一份注册订阅和信息;通过命名事件在不同进程之间相互通知及时更新注册订阅信息;通过命名管道由数据提供者主动向订阅者建立管道链接并推送数据。
进一步地,所述命名事件和命名管道采用同一个随机标识符GUID的字符串表示,系统中的进程每次启动都会重新随机获取一个标识符GUID用于命名系统的事件和管道;所有的命名管道都是基于报文的,保证命名管道每次收到的数据都是具有完整定义的报文。
进一步地,所述ActiveX组件还包括一个初始化接口、一个资源释放接口、一个数据推送接口以及一个数据接受回调事件;
初始化接口的参数包括:注册数据类型表、订阅数据类型表;该初始化接口用于初始化内存映射、注册进程信息、自动匹配建立进程间的数据供需关系;
资源释放接口:用于进程退出时清理进程注册信息以及进程间的供需关系更新;
数据推送接口的参数包括:数据类型、数据起始地址、以及数据大小;该数据推送接口用于推送进程能够提供的注册数据类型对应的数据,根据进程间数据供需关系进行广播推送;
数据接收回调事件的参数包括:数据类型、数据起始地址以及数据大小,该数据接收回调事件用于处理命名管道接收到的进程订阅的数据类型对应的数据。
进一步地,注册和订阅信息采用内存映射技术,依靠内存映射技术实现不同进程之间的共享,所述内存映射结构由注册信息、订阅信息、进程索引以及进程详情4部分组成;
所述注册信息用于登记每一种类型的数据都有哪些进程能够提供;其由M个结构单元T组成,每个结构单元从0开始顺序编号,取值范围为T0~TM-1,分别对应一种数据类型;每个结构单元T由个字节组成,P为进程数上限值;每个字节的每一位Tmi(0≤m≤M-1,0≤i≤7)代表一个进程的索引,值为1则表示该位索引对应的进程能够提供该数据,值为0则不能够提供该数据;其中,Tmi对应的进程索引编号为(m*8+i)的进程;
所述订阅信息的结构和注册信息是相同的,用于登记对应的数据类型都有哪些进程订阅了;同样由M个结构单元T组成,每个结构单元从0开始顺序编号,取值范围为T0~TM-1,分别对应一种数据类型;每个结构单元T由个字节组成,每个字节的每一位Tmi(0≤m≤M-1,0≤i≤7)代表一个进程的索引,值为1则表示该位索引对应的进程订阅该类型的数据,值为0则未订阅该类型的数据;其中,Tmi对应的进程索引编号为(m*8+i)的进程;
所述进程索引用于标识所述的进程详情中预分配的P个进程空间的使用情况,其大小为个字节,每个字节中的每一位Bij代表对应索引的进程空间使用情况;1表示已被占用,0则表示空闲;其中Bij(0≤i≤P-1,0≤j≤7)表示第i个字节的第j位,其对应的进程空间索引为(i*8+j);
所述进程详情用于存放每个进程对应命名管道和命名事件的名称,其大小为P*32个字节,每32个字节存储对应索引进程的命名管道和命名事件的名称;每个进程索引i对应的名称存储的相对进程详情的偏移地址为i*32;
内存映射大小的计算公式:内存映射大小S=注册信息+订阅信息+进程索引+进程详情
其对应计算公式为:
即为
进一步地,所述方法进一步包括初始化流程:初始化ActiveX组件获得标识符GUID创建命名事件和命名管道;创建订阅新型更新线程、命名管道监听线程、数据接收线程;判断内存映射是否存在;否,则创建并初始化内存映射;是,则初始化进程注册订阅信息,获取注册数据类型对应订阅进程的标识符GUID,并建立与所有标识符GUID对应的命名管道链接;绑定命名管道链接与订阅的数据类型的映射关系,从而完成初始化。
进一步地,所述更新注册订阅信息具体为:更新注册订阅信息,循环等待命名事件激活,判断线程是否退出,是,则线程退出并结束;否,则判断命名事件是否激活,否,则循环等待命名事件激活;是,则加载内存映射,获取注册数据类型对应订阅进程的标识符GUID;判断所有标识符GUID对应的命名管道是否已链接;否,与未链接的命名管道建立链接,并循环等待命名事件激活;是,判断所有已链接的命名管道的标识符GUID是否都存在,否,则关闭标识符GUID不存在的命名管道,并解除命名管道与数据类型的映射关系,并循环等待命名事件激活;是,则循环等待命名事件激活。
进一步地,所述推送数据具体为:查询订阅该类型的所有命名管道链接,判断查询结果是否为空,是,则推送结束并结束流程;否,判断查询是否遍历结束;是,则推送结束并结束流程;否获取下一个命名管道链接,推送数据。
进一步地,所述命名管道监听线程的监听流程具体为:循环等待客户端建立链接,判断线程是否退出,是,则推送结束并结束流程;否,则判断是否建立链接请求,否,则循环等待客户端建立链接,是,绑定通知消息并添加到客户端列表中;循环等待客户端建立链接。
进一步地,所述方法进一步包括数据接收流程:循环等待数据接收消息,判断线程是否退出,是,线程退出并结束流程;否,判断消息的数据是否到达,否,则循环等待数据接收消息,是,查询该消息绑定的所有客户端连接,判断查询结果是否为空,是,则循环等待数据接收消息,否,判断是否查询遍历结束,是,则循环等待数据接收消息;否,获取下一个命名管道链接,并接受数据,判断是否接收到数据,否,则重新判断是否查询遍历结束,是,通过回调时间通知处理接收数据。
进一步地,所述方法进一步包括退出流程:关闭订阅信息更新线程、命名管道监听线程、数据接收线程;将内存映射注册信息的所有类型中该进程索引对应的标志位置为0;将内存映射订阅信息的所有类型中该进程索引对应的标志位置为0,获取订阅数据类型对应数据提供进程的标识符GUID,并激活所有标识符GUID对应的命名事件,解除所有命名管道链接与订阅的数据类型的映射关系,关闭本进程所有猪洞建立的命名管道链接;回收进程索引,将内存映射中进程索引对应标志位置为0,判断是否所有进程均已退出,否,退出并结束,是,释放内存映射。
本发明具有如下优点:本发明在传统进程通信的基础上,通过订阅/推送技术,实现生产者(推送数据的进程)和消费者(接收数据的进程)间的分离和自动匹配,在配对的进程之间自动实现数据推送和广播,通用性高,灵活性好。特别适用于在不同系统进程之间进行数据通信和数据共享,能够有效降低后台系统进程管理复杂度和数据重复访问获取的压力。
附图说明
图1为本发明方法的原理框图。
图2为本发明初始化流程示意图。
图3为本发明更新注册订阅信息的流程示意图。
图4为本发明推送数据的流程示意图。
图5为本发明命名管道监听线程的监听的流程示意图。
图6为本发明数据接收流程的流程示意图。
图7为本发明退出流程的流程示意图。
具体实施方式
请参阅图1所示,本发明的一种本地多进程间数据订阅推送的方法,将系统中的不同的进程通过加载相同的ActiveX组件实现各个进程间的通信;所述ActiveX组件包括:内存映射注册订阅信息、命名事件、命名管道;所述ActiveX组件之间通过内存映射实现注册、订阅信息的的共享,所述命名事件对进程通知事件进行命名,所述命名管道是对进程数据通信管道进行命名;通过内存映射在多个进程间共享同一份注册订阅和信息;通过命名事件在不同进程之间相互通知及时更新注册订阅信息;通过命名管道由数据提供者主动向订阅者建立管道链接并推送数据。
其中,所述命名事件和命名管道采用同一个随机标识符GUID的字符串表示,系统中的进程每次启动都会重新随机获取一个标识符GUID用于命名系统的事件和管道;所有的命名管道都是基于报文的,保证命名管道每次收到的数据都是具有完整定义的报文。
所述ActiveX组件还包括一个初始化接口、一个资源释放接口、一个数据推送接口以及一个数据接受回调事件;
初始化接口的参数包括:注册数据类型表、订阅数据类型表;该初始化接口用于初始化内存映射、注册进程信息、自动匹配建立进程间的数据供需关系;
资源释放接口:用于进程退出时清理进程注册信息以及进程间的供需关系更新;
数据推送接口的参数包括:数据类型、数据起始地址、以及数据大小;该数据推送接口用于推送进程能够提供的注册数据类型对应的数据,根据进程间数据供需关系进行广播推送;
数据接收回调事件的参数包括:数据类型、数据起始地址以及数据大小,该数据接收回调事件用于处理命名管道接收到的进程订阅的数据类型对应的数据。
注册和订阅信息采用内存映射技术,依靠内存映射技术实现不同进程之间的共享,所述内存映射结构由注册信息、订阅信息、进程索引以及进程详情4部分组成;内存映射结构的结构如下表1所示:
表1
其大小主要取决于:数据类型个数M、最大进程上限数P。
所述注册信息用于登记每一种类型的数据都有哪些进程能够提供;其由M个结构单元T组成,每个结构单元从0开始顺序编号,取值范围为T0~TM-1,分别对应一种数据类型;每个结构单元T由个字节组成,P为进程数上限值;每个字节的每一位Tmi(0≤m≤M-1,0≤i≤7)代表一个进程的索引,值为1则表示该位索引对应的进程能够提供该数据,值为0则不能够提供该数据;其中,Tmi对应的进程索引编号为(m*8+i)的进程;
所述订阅信息的结构和注册信息是相同的,用于登记对应的数据类型都有哪些进程订阅了;同样由M个结构单元T组成,每个结构单元从0开始顺序编号,取值范围为T0~TM-1,分别对应一种数据类型;每个结构单元T由个字节组成,每个字节的每一位Tmi(0≤m≤M-1,0≤i≤7)代表一个进程的索引,值为1则表示该位索引对应的进程订阅该类型的数据,值为0则未订阅该类型的数据;其中,Tmi对应的进程索引编号为(m*8+i)的进程;
所述进程索引用于标识所述的进程详情中预分配的P个进程空间的使用情况,其大小为个字节,每个字节中的每一位Bij代表对应索引的进程空间使用情况;1表示已被占用,0则表示空闲;其中Bij(0≤i≤P-1,0≤j≤7)表示第i个字节的第j位,其对应的进程空间索引为(i*8+j);
所述进程详情用于存放每个进程对应命名管道和命名事件的名称,其大小为P*32个字节,每32个字节存储对应索引进程的命名管道和命名事件的名称;每个进程索引i对应的名称存储的相对进程详情的偏移地址为i*32;
内存映射大小的计算公式:内存映射大小S=注册信息+订阅信息+进程索引+进程详情
其对应计算公式为:
即为
其中,a)上述的数据类型:规定为所有的数据都可以用一个从0开始递增的编号唯一标识,用于区分不同的数据的定义;进程间通过该编号来确定自身能够提供的数据类型和需要订阅的数据类型;数据类型的上限是可变的,我们定义变量T用于表示数据类型个数的上限。
b)命名事件和命名管道的名称定义:命名事件和命名管道采用同一个随机标识符GUID的字符串表示,固定长度为32个字节。进程每次启动都会重新随机获取一个标识符GUID用于命名事件和管道;
c)基于报文的命名管道:所有的命名管道都是基于报文的,保证命名管道每次收到的数据都是具有完整定义的报文(区别于流式命名管道);
d)进程数上限:最大允许进行通信的进程数量。根据系统规模和系统复杂度的差异,通信的进程数量上限是可变的,我们定义变量P用于表示进程数上限。
e)数据报文结构:推送数据和接受数据的报文架构一样,都是由数据类型和数据内容组成,其中数据类型为放在报文的最前端,其大小等于随后紧跟数据内容。结构如下表2所示:
表2
数据类型 数据内容
f)推送数据的大小:由于命名管道推送数据报文的数据大小限制,当推送数据的大小大于报文上限时,进程之间必须自行协商数据分包发送机制,并自定义数据内容结构。
如图2所示,所述方法进一步包括初始化流程:初始化ActiveX组件获得标识符GUID创建命名事件和命名管道;创建订阅新型更新线程、命名管道监听线程、数据接收线程;判断内存映射是否存在;否,则创建并初始化内存映射;是,则初始化进程注册订阅信息,获取注册数据类型对应订阅进程的标识符GUID,并建立与所有标识符GUID对应的命名管道链接;绑定命名管道链接与订阅的数据类型的映射关系,从而完成初始化。
如图3所示,所述更新注册订阅信息具体为:更新注册订阅信息,循环等待命名事件激活,判断线程是否退出,是,则线程退出并结束;否,则判断命名事件是否激活,否,则循环等待命名事件激活;是,则加载内存映射,获取注册数据类型对应订阅进程的标识符GUID;判断所有标识符GUID对应的命名管道是否已链接;否,与未链接的命名管道建立链接,并循环等待命名事件激活;是,判断所有已链接的命名管道的标识符GUID是否都存在,否,则关闭标识符GUID不存在的命名管道,并解除命名管道与数据类型的映射关系,并循环等待命名事件激活;是,则循环等待命名事件激活。
如图4所示,所述推送数据具体为:查询订阅该类型的所有命名管道链接,判断查询结果是否为空,是,则推送结束并结束流程;否,判断查询是否遍历结束;是,则推送结束并结束流程;否获取下一个命名管道链接,推送数据。
如图5所示,所述命名管道监听线程的监听流程具体为:循环等待客户端建立链接,判断线程是否退出,是,则推送结束并结束流程;否,则判断是否建立链接请求,否,则循环等待客户端建立链接,是,绑定通知消息并添加到客户端列表中;循环等待客户端建立链接。
如图6所示,所述方法进一步包括数据接收流程:循环等待数据接收消息,判断线程是否退出,是,线程退出并结束流程;否,判断消息的数据是否到达,否,则循环等待数据接收消息,是,查询该消息绑定的所有客户端连接,判断查询结果是否为空,是,则循环等待数据接收消息,否,判断是否查询遍历结束,是,则循环等待数据接收消息;否,获取下一个命名管道链接,并接受数据,判断是否接收到数据,否,则重新判断是否查询遍历结束,是,通过回调时间通知处理接收数据。
如图7所示,所述方法进一步包括退出流程:关闭订阅信息更新线程、命名管道监听线程、数据接收线程;将内存映射注册信息的所有类型中该进程索引对应的标志位置为0;将内存映射订阅信息的所有类型中该进程索引对应的标志位置为0,获取订阅数据类型对应数据提供进程的标识符GUID,并激活所有标识符GUID对应的命名事件,解除所有命名管道链接与订阅的数据类型的映射关系,关闭本进程所有猪洞建立的命名管道链接;回收进程索引,将内存映射中进程索引对应标志位置为0,判断是否所有进程均已退出,否,退出并结束,是,释放内存映射。
另外,这里值得一提的是:
1、其他处理细节
a)进程注册订阅处理过程:1、查找内存映射中的进程索引,获取空闲进程控件索引i,将32位进程GUID字符串写入进程详情相对偏移地址为i*32的位置;2、将内存映射中注册信息中所有本进程注册数据类型对应的单元结构中第位置为1;3、将内存映射中订阅信息中所有本进程订阅数据类型对应的单元结构中第位置为1;4、根据订阅数据类型,查找提供该类型进程的GUID,并激活所有GUID对应的命名事件。
b)根据数据类型查找注册(订阅)进程的GUID过程:找到内存映射中数据类型对应的注册(订阅)信息中的单元结构,一次从第一个字节第一位开始逐位判断,如果第i个字节的第j位为1,则表示索引为(i*8+j)的进程注册(订阅)了该数据类型。
c)判断是否所有进程程均已退出的过程:依次判断内存映射中进程索引的所有字节,当所谓字节都为0,则表示所有进程均已退出。
总之,本发明通过基于内存映射技术的数据订阅,实现生产者(推送数据的进程)和消费者(接收数据的进程)间的分离和自动匹配,基于命名事件实现进程间的订阅更新通知,基于命名管道技术实现进程间定向数据推送,从而实现多个进程间的数据通信和数据共享,通用性高,灵活性好。特别适用于在不同系统进程之间的数据通信和数据共享,有效降低后台系统集成复杂度和数据重复访问获取的压力。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (10)

1.一种本地多进程间数据订阅推送的方法,其特征在于:将系统中的不同的进程通过加载相同的ActiveX组件实现各个进程间的通信;所述ActiveX组件包括:内存映射注册订阅信息、命名事件、命名管道;所述ActiveX组件之间通过内存映射实现注册、订阅信息的的共享,所述命名事件是对进程通知事件进行命名,所述命名管道是对进程数据通信管道进行命名;通过内存映射在多个进程间共享同一份注册订阅和信息;通过命名事件在不同进程之间相互通知及时更新注册订阅信息;通过命名管道由数据提供者主动向订阅者建立管道链接并推送数据。
2.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述命名事件和命名管道采用同一个随机标识符GUID的字符串表示,系统中的进程每次启动都会重新随机获取一个标识符GUID用于命名系统的事件和管道;所有的命名管道都是基于报文的,保证命名管道每次收到的数据都是具有完整定义的报文。
3.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述ActiveX组件还包括一个初始化接口、一个资源释放接口、一个数据推送接口以及一个数据接受回调事件;
初始化接口的参数包括:注册数据类型表、订阅数据类型表;该初始化接口用于初始化内存映射、注册进程信息、自动匹配建立进程间的数据供需关系;
资源释放接口:用于进程退出时清理进程注册信息以及进程间的供需关系更新;
数据推送接口的参数包括:数据类型、数据起始地址、以及数据大小;该数据推送接口用于推送进程能够提供的注册数据类型对应的数据,根据进程间数据供需关系进行广播推送;
数据接收回调事件的参数包括:数据类型、数据起始地址以及数据大小,该数据接收回调事件用于处理命名管道接收到的进程订阅的数据类型对应的数据。
4.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:注册和订阅信息采用内存映射技术,依靠内存映射技术实现不同进程之间的共享,所述内存映射结构由注册信息、订阅信息、进程索引以及进程详情4部分组成;
所述注册信息用于登记每一种类型的数据都有哪些进程能够提供;其由M个结构单元T组成,每个结构单元从0开始顺序编号,取值范围为T0~TM-1,分别对应一种数据类型;每个结构单元T由个字节组成,P为进程数上限值;每个字节的每一位Tmi(0≤m≤M-1,0≤i≤7)代表一个进程的索引,值为1则表示该位索引对应的进程能够提供该数据,值为0则不能够提供该数据;其中,Tmi对应的进程索引编号为(m*8+i)的进程;
所述订阅信息的结构和注册信息是相同的,用于登记对应的数据类型都有哪些进程订阅了;同样由M个结构单元T组成,每个结构单元从0开始顺序编号,取值范围为T0~TM-1,分别对应一种数据类型;每个结构单元T由个字节组成,每个字节的每一位Tmi(0≤m≤M-1,0≤i≤7)代表一个进程的索引,值为1则表示该位索引对应的进程订阅该类型的数据,值为0则未订阅该类型的数据;其中,Tmi对应的进程索引编号为(m*8+i)的进程;
所述进程索引用于标识所述的进程详情中预分配的P个进程空间的使用情况,其大小为个字节,每个字节中的每一位Bij代表对应索引的进程空间使用情况;1表示已被占用,0则表示空闲;其中Bij(0≤i≤P-1,0≤j≤7)表示第i个字节的第j位,其对应的进程空间索引为(i*8+j);
所述进程详情用于存放每个进程对应命名管道和命名事件的名称,其大小为P*32个字节,每32个字节存储对应索引进程的命名管道和命名事件的名称;每个进程索引i对应的名称存储的相对进程详情的偏移地址为i*32;
内存映射大小的计算公式:内存映射大小S=注册信息+订阅信息+进程索引+进程详情
其对应计算公式为:
即为
5.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述方法进一步包括初始化流程:初始化ActiveX组件获得标识符GUID创建命名事件和命名管道;创建订阅新型更新线程、命名管道监听线程、数据接收线程;判断内存映射是否存在;否,则创建并初始化内存映射;是,则初始化进程注册订阅信息,获取注册数据类型对应订阅进程的标识符GUID,并建立与所有标识符GUID对应的命名管道链接;绑定命名管道链接与订阅的数据类型的映射关系,从而完成初始化。
6.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述更新注册订阅信息具体为:更新注册订阅信息,循环等待命名事件激活,判断线程是否退出,是,则线程退出并结束;否,则判断命名事件是否激活,否,则循环等待命名事件激活;是,则加载内存映射,获取注册数据类型对应订阅进程的标识符GUID;判断所有标识符GUID对应的命名管道是否已链接;否,与未链接的命名管道建立链接,并循环等待命名事件激活;是,判断所有已链接的命名管道的标识符GUID是否都存在,否,则关闭标识符GUID不存在的命名管道,并解除命名管道与数据类型的映射关系,并循环等待命名事件激活;是,则循环等待命名事件激活。
7.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述推送数据具体为:查询订阅该类型的所有命名管道链接,判断查询结果是否为空,是,则推送结束并结束流程;否,判断查询是否遍历结束;是,则推送结束并结束流程;否获取下一个命名管道链接,推送数据。
8.根据权利要求5所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述命名管道监听线程的监听流程具体为:循环等待客户端建立链接,判断线程是否退出,是,则推送结束并结束流程;否,则判断是否建立链接请求,否,则循环等待客户端建立链接,是,绑定通知消息并添加到客户端列表中;循环等待客户端建立链接。
9.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述方法进一步包括数据接收流程:循环等待数据接收消息,判断线程是否退出,是,线程退出并结束流程;否,判断消息的数据是否到达,否,则循环等待数据接收消息,是,查询该消息绑定的所有客户端连接,判断查询结果是否为空,是,则循环等待数据接收消息,否,判断是否查询遍历结束,是,则循环等待数据接收消息;否,获取下一个命名管道链接,并接受数据,判断是否接收到数据,否,则重新判断是否查询遍历结束,是,通过回调时间通知处理接收数据。
10.根据权利要求1所述的一种本地多进程间数据订阅推送的方法,其特征在于:所述方法进一步包括退出流程:关闭订阅信息更新线程、命名管道监听线程、数据接收线程;将内存映射注册信息的所有类型中该进程索引对应的标志位置为0;将内存映射订阅信息的所有类型中该进程索引对应的标志位置为0,获取订阅数据类型对应数据提供进程的标识符GUID,并激活所有标识符GUID对应的命名事件,解除所有命名管道链接与订阅的数据类型的映射关系,关闭本进程所有猪洞建立的命名管道链接;回收进程索引,将内存映射中进程索引对应标志位置为0,判断是否所有进程均已退出,否,退出并结束,是,释放内存映射。
CN201510228881.7A 2015-05-07 2015-05-07 一种本地多进程间数据订阅推送的方法 Active CN104809028B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510228881.7A CN104809028B (zh) 2015-05-07 2015-05-07 一种本地多进程间数据订阅推送的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510228881.7A CN104809028B (zh) 2015-05-07 2015-05-07 一种本地多进程间数据订阅推送的方法

Publications (2)

Publication Number Publication Date
CN104809028A true CN104809028A (zh) 2015-07-29
CN104809028B CN104809028B (zh) 2020-05-12

Family

ID=53693876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510228881.7A Active CN104809028B (zh) 2015-05-07 2015-05-07 一种本地多进程间数据订阅推送的方法

Country Status (1)

Country Link
CN (1) CN104809028B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304269A (zh) * 2017-01-13 2018-07-20 阿里巴巴集团控股有限公司 一种数据的发送、接收方法、装置及通信框架
CN109067690A (zh) * 2018-08-07 2018-12-21 腾讯科技(深圳)有限公司 离线计算结果数据的推送方法及装置
CN109246085A (zh) * 2018-08-15 2019-01-18 腾讯科技(深圳)有限公司 一种匿名网络访问方法、客户端、系统、服务器及介质
CN109408249A (zh) * 2018-09-17 2019-03-01 中国建设银行股份有限公司 数据同步传输方法、系统、装置和存储介质
CN110189039A (zh) * 2019-06-04 2019-08-30 湖南智慧畅行交通科技有限公司 基于分布式的充电桩事件处理引擎
CN111221547A (zh) * 2018-11-23 2020-06-02 武汉斗鱼网络科技有限公司 客户端更新进度监控方法、存储介质、电子设备及系统
CN113032161A (zh) * 2019-12-25 2021-06-25 北京比特大陆科技有限公司 进程通讯方法及相关产品
CN113573282A (zh) * 2020-04-29 2021-10-29 中国电信股份有限公司 订阅数据的提供/获取方法、提供/获取装置和交互系统
CN113590362A (zh) * 2021-08-10 2021-11-02 中孚信息股份有限公司 进程间消息处理方法、装置、电子设备及存储介质
CN115002202A (zh) * 2022-08-01 2022-09-02 深圳市信润富联数字科技有限公司 消息监听方法、装置、电子设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954293A (zh) * 2004-04-02 2007-04-25 西姆毕恩软件有限公司 计算装置中的进程间通信
CN102355429A (zh) * 2011-08-12 2012-02-15 北京思创银联科技股份有限公司 基于管道的多进程间消息通信方法
US20120117186A1 (en) * 2010-11-04 2012-05-10 Electronics And Telecommunications Research Institute Dds structure with scalability and adaptability and node constituting the same
CN102508722A (zh) * 2011-12-02 2012-06-20 中科方德软件有限公司 一种嵌入式环境下的进程间通信方法
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954293A (zh) * 2004-04-02 2007-04-25 西姆毕恩软件有限公司 计算装置中的进程间通信
US20120117186A1 (en) * 2010-11-04 2012-05-10 Electronics And Telecommunications Research Institute Dds structure with scalability and adaptability and node constituting the same
CN102355429A (zh) * 2011-08-12 2012-02-15 北京思创银联科技股份有限公司 基于管道的多进程间消息通信方法
CN102508722A (zh) * 2011-12-02 2012-06-20 中科方德软件有限公司 一种嵌入式环境下的进程间通信方法
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
于江: "SmartMessageQ消息中间件设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304269A (zh) * 2017-01-13 2018-07-20 阿里巴巴集团控股有限公司 一种数据的发送、接收方法、装置及通信框架
CN109067690A (zh) * 2018-08-07 2018-12-21 腾讯科技(深圳)有限公司 离线计算结果数据的推送方法及装置
CN109067690B (zh) * 2018-08-07 2021-03-26 腾讯科技(深圳)有限公司 离线计算结果数据的推送方法及装置
CN109246085A (zh) * 2018-08-15 2019-01-18 腾讯科技(深圳)有限公司 一种匿名网络访问方法、客户端、系统、服务器及介质
CN109246085B (zh) * 2018-08-15 2021-06-15 腾讯科技(深圳)有限公司 一种匿名网络访问方法、客户端、系统、服务器及介质
CN109408249A (zh) * 2018-09-17 2019-03-01 中国建设银行股份有限公司 数据同步传输方法、系统、装置和存储介质
CN111221547A (zh) * 2018-11-23 2020-06-02 武汉斗鱼网络科技有限公司 客户端更新进度监控方法、存储介质、电子设备及系统
CN111221547B (zh) * 2018-11-23 2023-09-05 义乌市建设投资集团有限公司 客户端更新进度监控方法、存储介质、电子设备及系统
CN110189039B (zh) * 2019-06-04 2023-04-25 湖南智慧畅行交通科技有限公司 基于分布式的充电桩事件处理引擎
CN110189039A (zh) * 2019-06-04 2019-08-30 湖南智慧畅行交通科技有限公司 基于分布式的充电桩事件处理引擎
CN113032161A (zh) * 2019-12-25 2021-06-25 北京比特大陆科技有限公司 进程通讯方法及相关产品
CN113032161B (zh) * 2019-12-25 2024-06-04 北京比特大陆科技有限公司 进程通讯方法及相关产品
CN113573282B (zh) * 2020-04-29 2022-09-16 中国电信股份有限公司 订阅数据的提供/获取方法、提供/获取装置和交互系统
CN113573282A (zh) * 2020-04-29 2021-10-29 中国电信股份有限公司 订阅数据的提供/获取方法、提供/获取装置和交互系统
CN113590362A (zh) * 2021-08-10 2021-11-02 中孚信息股份有限公司 进程间消息处理方法、装置、电子设备及存储介质
CN115002202A (zh) * 2022-08-01 2022-09-02 深圳市信润富联数字科技有限公司 消息监听方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN104809028B (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN104809028A (zh) 一种本地多进程间数据订阅推送的方法
US9207988B2 (en) Method, system, and device for managing server hardware resources in a cloud scheduling environment
US20100250646A1 (en) Mechanism for geo distributing application data
CN103200209A (zh) 成员资源的访问方法、群组服务器和成员设备
CN101383839A (zh) 基于数据服务器的数据分发系统及其实现方法
CN110413845B (zh) 基于物联网操作系统的资源存储方法及装置
CN105227367A (zh) 一种低延迟的告警解析处理方法
CN106170023A (zh) 一种网络资源的处理方法、装置、系统以及服务器
US20120096136A1 (en) Method and apparatus for sharing contents using information of group change in content oriented network environment
CN101883094B (zh) 嵌入式通用即插即用工业监控网络数据库服务系统
CN114090388A (zh) 信息获取方法、服务器集群、服务器及设备
CN104243610A (zh) 一种分布式文件传输服务方法
CN105656964B (zh) 数据推送的实现方法及装置
CN105578426A (zh) 一种通讯信息的发送方法和装置
CN104468299A (zh) 基于用户规则的企业服务总线系统
KR102066294B1 (ko) 개방형 m2m 시스템 및 방법
CN108040009A (zh) 数据定向传输方法、数据定向传输控制装置及计算机可读存储介质
CN110012107B (zh) 一种数据通信方法、设备、装置、系统及存储介质
CN101499931A (zh) 基于分布式环境的功能扩展方法和系统
CN101938383B (zh) 多种业务的用户账号在线监控方法、系统与监控服务系统
CN102419832A (zh) 一种分布式环境下资源定位方法及其系统
CN101572635B (zh) 一种电视台主干平台中基于通道配置的数据传输调度方法
CN101494664B (zh) 基于jxta的p2p推式网络存储方法
CN101146107B (zh) 一种下载数据的方法及装置
US20110252129A1 (en) Apparatus and method for registering node and searching for floating internet protocol address using distributed network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
CB03 Change of inventor or designer information

Inventor after: Wang Guoqing

Inventor after: Lin Wenshan

Inventor after: Lin Qiufang

Inventor before: Lin Guoqing

Inventor before: Lin Wenshan

Inventor before: Lin Qiufang

COR Change of bibliographic data
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 361009 Xiamen Torch High tech Zone Software Park Innovation Building C Area 303-E, Xiamen, Fujian Province

Patentee after: Xiamen Yaxun Zhilian Technology Co.,Ltd.

Country or region after: China

Address before: 361009 No.46, guanri Road, phase II, software park industrial base, Xiamen City, Fujian Province

Patentee before: XIAMEN YAXON NETWORK Co.,Ltd.

Country or region before: China