CN104899105A - 一种进程间通信方法 - Google Patents

一种进程间通信方法 Download PDF

Info

Publication number
CN104899105A
CN104899105A CN201410077942.XA CN201410077942A CN104899105A CN 104899105 A CN104899105 A CN 104899105A CN 201410077942 A CN201410077942 A CN 201410077942A CN 104899105 A CN104899105 A CN 104899105A
Authority
CN
China
Prior art keywords
signal
receiving end
transmitting terminal
thread
data block
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
CN201410077942.XA
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.)
Anhui Wanxin Wisedu Technology Co Ltd
Original Assignee
Anhui Wanxin Wisedu Technology 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 Anhui Wanxin Wisedu Technology Co Ltd filed Critical Anhui Wanxin Wisedu Technology Co Ltd
Priority to CN201410077942.XA priority Critical patent/CN104899105A/zh
Publication of CN104899105A publication Critical patent/CN104899105A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明属于网络通信领域,尤其涉及一种进程间通信方法,包括以下步骤:发送端创建多个线程及不同优先级的信号,接收端创建多个线程及不同优先级的信号,所述发送端或者接收端同一优先级的信号中包括一个或多个信号;所述发送端按指定策略获取发送端共享内存中的信号,并分配发送端线程,所述发送端线程通过所述信号发送数据块到所述接收端;所述接收端按指定策略获取接收端共享内存中的信号,并分配接收端线程,所述接收端线程读取所述信号中的数据块。系统通过建立的控制链路,通知线程从线程内部主动结束线程,简化线程异步终止时资源清理过程,规避查询方式带来的额外系统开销。如此,大数据量并发时由多信号、多线程同时传输,大大提高了进程间通信效率。

Description

一种进程间通信方法
技术领域
本发明属于网络通信领域,尤其涉及一种进程间通信方法。
背景技术
进程间通信(IPC,Interprocess Communications)就是在不同进程之间传播或交换信息,这就需要不同进程之间存在一个双方都可以访问的介质,共享内存就是用于进程之间进行通信的介质。所谓共享内存,是指同一块物理内存被映射到进程 A、B 各自的进程地址空间,可以被 A、B 进程同时访问,达到交换数据的目的。
通常使用的多进程间通信方法(信号、消息队列、共享内存、信号量、套接口等),一般如果使用阻塞方式则需要花费一个进程或线程去阻塞等待事件的发生,而如果是非阻塞则又需要使用查询的方式去反复查询事件的发生。前者会使程序进程或线程数目增多,增加程序的复杂性,而后者又会浪费额外的系统资源在查询事件的发生上。随着网络化社会的不断进步,越来越多的网络通讯工具应用到工作和生活中,比如飞信、MSN 和一些企业版应用软件等。以上各种通信方式都依赖于不同架构模式,在分布式通信架构中的应用中,进程之间经常需要频繁的通信,对网络的高效、流畅、实时性要求非常高。当大业务量并发的情况下,进程之间的通信就变得缓慢、延时、数据处理超时,甚至会导致系统崩溃。
发明内容
本发明提供一种进程间通信方法,以解决上述问题。
一种进程间通信方法,包括以下步骤。发送端创建多个线程及不同优先级的信号,接收端创建多个线程及不同优先级的信号,所述发送端或者接收端同一优先级的信号中包括一个或多个信号;所述发送端按指定策略获取发送端共享内存中的信号,并分配发送端线程,所述发送端线程通过所述信号发送数据块到所述接收端;所述接收端按指定策略获取接收端共享内存中的信号,并分配接收端线程,所述接收端线程读取所述信号中的数据块。
相较于先前技术,根据本发明提供的进程间通信方法,发送端及接收端分别创建多个线程及不同优先级的信号,其中同一优先级的信号中包括一个或多个信号,且发送端建立与接收端的连接。通过对不同信号设定对应优先级,达到了信号资源的合理利用。发送端按指定策略获取发送端共享内存中信号,并分配发送端线程,所述发送端线程通过所述信号发送数据块到接收端。接收端按指定策略获取接收端共享内存中信号接收所述数据块,并分配接收端线程,所述接收端线程读取所述信号中的数据块。此外,所述发送端或者接收端按所述指定策略获取各自共享内存中信号,所述发送端获取的信号轮询处理待发送数据块或者所述接收端获取的信号轮询处理待接收数据块。同时避开一般方法中通信链路在阻塞方式下一条通路花费一个进程或线程的问题,降低了程序的复杂性,也不需要使用查询方式产生额外的系统开销。同时系统通过建立的控制链路,通知线程从线程内部主动结束线程,简化线程异步终止时资源清理过程,规避查询方式带来的额外系统开销。如此,大数据量并发时由多信号、多线程同时传输,大大提高了进程间通信效率。
具体实施方式
步骤 101 :发送端创建多个线程及不同优先级的信号,接收端创建多个线程及不同优先级的信号,所述发送端或者接收端同一优先级的信号中包括一个或多个信号,且所述发送端建立与所述接收端的连接。
具体而言,发送端及接收端分别具有存放空闲信号的共享内存及存放忙碌信号的繁忙池。发送端及接收端将创建好的信号加入到各自共享内存中。所述信号分为不同优先级,信号优先级越高,对应信号承载量越大。此外,发送端可随时向接收端发起连接请求,并建立与接收端的连接。发送端及接收端分别在本地存储信号优先级与承载量对照表,所述对照表包含信号优先级、信号名称及信号承载量。所述信号优先级与承载量对照表例如下表所示。
步骤 102 :所述发送端按指定策略获取发送端共享内存中信号,并分配发送端线程,所述发送端线程通过所述信号发送数据块到所述接收端。
具体而言,所述发送端按指定策略获取发送端共享内存中信号的过程可以为,发送端信号发送完数据块后,所述发送端信号主动到所述发送端共享内存中报到后,发送端到自身共享内存中获取信号。于此,所述发送端根据自身对照表中不同优先级信号的承载量及数据块大小在发送端共享内存中获取相应优先级的信号,其中同一优先级的信号按照进入共享内存顺序选取或者随机选取,对此本发明不作限定。
所述发送端按指定策略获取发送端共享内存中信号的过程还可以为,给发送端共享内存中信号编号,随机取一个自然数除以发送端共享内存信号个数,所得余数为所述发送端在发送端共享内存中获取的信号编号,所述发送端获取发送端共享内存中编号为所述余数的信号。发送端及接收端分别具有数据池,发送端数据池用于存放待发送数据块,接收端数据池用于存放已接收的数据块。于此,发送端可按上述任一策略获取发送端共享内存中信号,并分配发送端线程,所述发送端线程从发送端数据池中取得数据块通过所述信号发送到所述接收端。
步骤 103 :所述接收端按指定策略获取接收端共享内存中信号接收所述数据块,并分配接收端线程,所述接收端线程读取所述信号中的数据块。
具体而言,所述接收端在本地存储信号优先级与承载量对照表,所述接收端按指定策略获取接收端共享内存中信号的过程与发送端类似,故于此不再赘述。
举例而言,若发送端与接收端建立连接后,发送端数据池中待发送数据块 a 大小为 50K,且发送端共享内存中包含两个高优先级信号 P1、P1’及一个低优先级信号 P3’。若发送端信号发送完数据块后主动到所述发送端共享内存中报到,且发送端到自身共享内存中获取信号。所述发送端根据数据块 a 大小及自身存储的对照表,确定选取高优先级的信号。所述高优先级信号现包括信号 P1 及 P1’,发送端可按照信号 P1 及 P1’进入共享内存的顺序或者随机选取相应信号用于传输数据块 a,对于具体选取方式本发明不作限定。
实施例二 
步骤 201 :发送端创建多个线程及不同优先级的信号,接收端创建多个线程及不同优先级的信号,且所述发送端建立与所述接收端的连接,所述发送端或者接收端同一优先级的信号中包括一个或多个信号。
具体而言,本步骤中发送端及接收端处理方式与步骤 101 相同,故于此不再赘述。
步骤 202 :所述发送端或者接收端按所述指定策略获取各自共享内存中信号,所述发送端获取的信号轮询处理待发送数据块或者所述接收端获取的信号轮询处理待接收数据块。
具体而言,所述发送端信号轮询处理待发送数据块或者所述接收端信号轮询处理待接收数据块时,所述发送端信号或者所述接收端信号根据自身优先级对应的承载量选择发送或者接收的数据块。若不同优先级的信号同时访问同一数据块,则优先选取较高优先级的信号处理所述数据块。其中,同一优先级的不同信号可按照进入共享内存顺序选取或者随机选取,对此本发明不作限定。
举例而言,若某一时刻接收端待接收数据块包括数据块 b(大小为 20K)及数据块c(大小为 40K),若接收端按所述指定策略获取一个中优先级信号 P2 及一个低优先级信号P3。其中,所述指定策略的内容同步骤 102 中的描述。若信号 P2 先访问数据块 b,信号 P3先访问数据块c。参照步骤101中的信号优先级与承载量对照表,数据块b大小不超过信号P2 最大承载量,则接收端为信号 P2 分配线程,所述线程通过信号 P2 读取数据块 b。信号 P3访问数据块 c 时,数据块 c 大小超过信号 P3 的最大承载量,则信号 P3 不处理数据块 c。
若信号 P2 先访问数据块 c,信号 P3 先访问数据块 b,参照所述对照表,数据块 c 大小不超过信号 P2 最大承载量,数据块 b 大小不超过信号 P3 最大承载量,则接收端分别为信号 P2 及 P3 分配线程,与信号 P2 对应的线程通过信号 P2 读取数据块 c,与信号 P3 对应的线程通过信号 P3 读取数据块 b。
若信号 P2 及信号 P3 同时访问数据块 b,接收端选择优先级较高的信号 P2 访问数据块 b。根据所述对照表,数据块 b 大小不超过信号 P2 的最大承载量,接收端为信号 P2 分配线程,所述线程通过信号 P2 读取数据块 b。信号 P3 接下来继续访问数据块 c,数据块 c大小超过信号 P3 的最大承载量,则信号 P3 不处理数据块 c。
若信号 P2 及信号 P3 同时访问数据块 c,接收端选择优先级较高的信号 P2 访问数据块c,数据块c大小不超过信号P2最大承载量,接收端为信号P2分配线程,所述线程通过信号 P2 读取数据块 c。接下来信号 P3 访问数据块 b,数据块 b 大小不超过信号 P3 最大承载量,接收端为信号P3分配线程,所述线程通过信号P3读取数据块b。于其它实施例中,若相同优先级的信号按进入对应共享内存的顺序选取,或者随机选取所述相同优先级的信号,对此本发明不作限定。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.   一种进程间通信方法,其特征在于包括以下步骤 :发送端创建多个线程及不同优先级的信号,接收端创建多个线程及不同优先级的信号,所述发送端或者接收端同一优先级的信号中包括一个或多个信号;所述发送端按指定策略获取发送端共享内存中的信号,并分配发送端线程,所述发送端线程通过所述信号发送数据块到所述接收端;所述接收端按指定策略获取接收端共享内存中的信号,并分配接收端线程,所述接收端线程读取所述信号中的数据块。
CN201410077942.XA 2014-03-05 2014-03-05 一种进程间通信方法 Pending CN104899105A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410077942.XA CN104899105A (zh) 2014-03-05 2014-03-05 一种进程间通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410077942.XA CN104899105A (zh) 2014-03-05 2014-03-05 一种进程间通信方法

Publications (1)

Publication Number Publication Date
CN104899105A true CN104899105A (zh) 2015-09-09

Family

ID=54031782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410077942.XA Pending CN104899105A (zh) 2014-03-05 2014-03-05 一种进程间通信方法

Country Status (1)

Country Link
CN (1) CN104899105A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354573A (zh) * 2016-08-29 2017-01-25 汉柏科技有限公司 一种基于优先级队列的进程间通信方法及装置
CN107765991A (zh) * 2016-08-19 2018-03-06 北京百度网讯科技有限公司 用于传输消息的方法和装置
CN107888515A (zh) * 2016-09-30 2018-04-06 郑州云海信息技术有限公司 一种基于ntb硬件的自适应优先级通信方法
WO2022151970A1 (zh) * 2021-01-14 2022-07-21 华为技术有限公司 一种数据传输方法、系统以及计算节点

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107765991A (zh) * 2016-08-19 2018-03-06 北京百度网讯科技有限公司 用于传输消息的方法和装置
CN107765991B (zh) * 2016-08-19 2019-03-01 北京百度网讯科技有限公司 用于传输消息的方法和装置
CN106354573A (zh) * 2016-08-29 2017-01-25 汉柏科技有限公司 一种基于优先级队列的进程间通信方法及装置
CN107888515A (zh) * 2016-09-30 2018-04-06 郑州云海信息技术有限公司 一种基于ntb硬件的自适应优先级通信方法
WO2022151970A1 (zh) * 2021-01-14 2022-07-21 华为技术有限公司 一种数据传输方法、系统以及计算节点

Similar Documents

Publication Publication Date Title
US10476697B2 (en) Network-on-chip, data transmission method, and first switching node
WO2009015549A1 (fr) Système à mémoire cache partagée, son procédé de mise en œuvre et son logiciel de mise en œuvre
EP3226490B1 (en) Optical network-on-chip, optical router and signal transmission method
CN101616083A (zh) 一种报文转发方法和装置
CN102594660A (zh) 一种虚拟接口交换方法、装置及系统
CN103516744A (zh) 一种数据处理的方法和应用服务器及集群
CN110995598B (zh) 一种变长报文数据处理方法和调度装置
CN104899105A (zh) 一种进程间通信方法
CN102480426A (zh) 基于pcie交换总线的通信方法及一种pcie交换系统
CN111404931B (zh) 一种基于持久性内存的远程数据传输方法
CN102377980A (zh) 一种视频会议中多点控制单元的备份方法和系统
CN105094751A (zh) 一种用于流式数据并行处理的内存管理方法
CN111416858B (zh) 一种媒体资源的处理平台、方法、装置和服务器
CN103179009B (zh) 一种分布式管理系统的动态自适应调用方法
CN103853676B (zh) 基于PCIe总线的信道分配、释放、数据传输方法和系统
CN103220230B (zh) 支持报文交叉存储的动态共享缓冲方法
EP2913759B1 (en) Memory access processing method based on memory chip interconnection, memory chip, and system
CN102223311A (zh) 一种队列调度方法及装置
CN113938955A (zh) 数据传输方法、装置、设备及系统
CN102984089A (zh) 流量管理调度方法及装置
CN113259408A (zh) 数据传输方法和系统
CN102299857B (zh) 一种组播报文处理方法、线卡及通信设备
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
CN106372013B (zh) 远程内存访问方法、装置和系统
CN111131081A (zh) 一种支持多进程的高性能单向传输的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150909