CN103294541A - 一种星型结构的多进程间的通信方法和装置 - Google Patents
一种星型结构的多进程间的通信方法和装置 Download PDFInfo
- Publication number
- CN103294541A CN103294541A CN2013101983405A CN201310198340A CN103294541A CN 103294541 A CN103294541 A CN 103294541A CN 2013101983405 A CN2013101983405 A CN 2013101983405A CN 201310198340 A CN201310198340 A CN 201310198340A CN 103294541 A CN103294541 A CN 103294541A
- Authority
- CN
- China
- Prior art keywords
- processor
- controller
- link
- control
- thread
- 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
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/54—Interprogram communication
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Abstract
本发明提出一种星型结构的多进程间的通信方法和装置,在线程中使用poll函数巧妙地将控制链路和通信链路结合在一起,进行集中监测,这样从宏观上看就是一个线程就可以同时与多个线程或进程进行通信。通信链路用于具体的功能信息的交互使用,控制链路用于具体的控制信息的交互使用。通过本发明,解决了多进程通信中的一对多的模型中一般通信方法无法在一个进程或线程中同时与其他多个线程或进程进行通信的问题,同时通过控制链路来通知线程从线程内部主动结束线程操作的方法,提供了一种异步终止线程的方法。
Description
技术领域
本发明涉及通信领域,特别是提出了一种星型结构的多进程间的通信方法和装置。
背景技术
在进行蓝牙相关的多线程编程时,遇到这样的需求:一个进程需要与其他多个进程或线程进行数据交互,且交互的数据量不大,但数据交互的时间具有随机性,即要能阻塞监听等待通信链路;需要能异步终止线程。一般情况下要同时与多个进程或线程进行数据通信,则每条通信链路需要建立一个进程或线程去阻塞等待事件的发生,这样程序会比较复杂。异步终止线程则一般使用pthread_cancel通知线程终止,或通过全局变量等方式在线程中循环询查方式来终止线程等方法,但会存在线程终止时的资源清理问题或执行效率低下的问题,严重时甚至出现程序意外终止的情况。
1.目前多进程间通信通常使用管道、消息队列、共享内存、信号量、套接口等方式,同时与多个进程或线程进行数据通信,则每条通信链路都建立一个进程或线程去阻塞等待事件的发生。
2.线程终止一般使用pthread_cancel通知线程终止,或通过全局变量等方式在线程中循环询查方式来终止线程。
通常使用的多进程间通信方法(管道、消息队列、共享内存、信号量、套接口等),一般如果使用阻塞方式则需要花费一个进程或线程去阻塞等待事件的发生,而如果是非阻塞则又需要使用查询的方式去反复查询事件的发生。前者会使程序进程或线程数目增多,增加程序的复杂性,而后者又会浪费额外的系统资源在查询事件的发生上。另外,在多线程编程中,异步终止线程一般使用pthread_cancel或全局变量方式异步终止线程,或存在资源清理问题或浪费额外的系统资源。图1是一般的实时多进程间通信模型结构示意图。
发明内容
本发明提供一种适用于类似于网络拓扑结构中的星型结构的多进程间的通信发明,在线程中使用poll函数巧妙地将控制链路和通信链路结合在一起,进行集中监测,这样从宏观上看就是一个线程就可以同时与多个线程或进程进行通信。通信链路用于具体的功能信息的交互使用,控制链路用于具体的控制信息的交互使用。通过本发明,解决了多进程通信中的一对多的模型中一般通信方法无法在一个进程或线程中同时与其他多个线程或进程进行通信的问题,同时通过控制链路来通知线程从线程内部主动结束线程操作的方法,提供了一种异步终止线程的方法。
本发明从整体上来看包括控制器,处理器,功能模块三个部分。首先由控制器启动处理器,并和处理器建立控制链路,随后处理器用poll阻塞监测控制器与处理器之间的控制器链路和处理器与其他功能模块之间的功能链路;控制器通过控制链路可以控制处理器新增和删减处理器与功能模块间的通信链路及监测功能,还可以通过控制链路关闭处理器;其他功能模块则通过新增的通信链路进行具体的功能性操作交互。
本发明通过poll函数与套接字组合使用,在一个线程或进程中集中式同时监测多个通信链路的句柄,并可以动态增加和删减所监测的通信链路句柄,避开一般方法中通信链路在阻塞方式下一条通路花费一个进程或线程的问题,降低了程序的复杂性,也不需要使用查询方式产生额外的系统开销。同时通过建立的控制链路,通知线程从线程内部主动结束线程,提供了一种异步终止线程的方法,简化线程异步终止时资源清理过程,规避查询方式带来的额外系统开销。
附图说明
通过参照附图更详细地描述本发明的示例性实施例,本发明的以上和其它方面及优点将变得更加易于清楚,在附图中:
图1:一般实时多进程间通信模型结构示意图;
图2:本发明实施例的一种星型结构的多进程间的通信模型结构示意图;
图3:本发明的一种星型结构的多进程间的通信模型框架图;
图4:本发明在程序运行的过程中存在的变化过程流程图。
具体实施方式
在下文中,现在将参照附图更充分地描述本发明,在附图中示出了各种实施例。然而,本发明可以以许多不同的形式来实施,且不应该解释为局限于在此阐述的实施例。相反,提供这些实施例使得本公开将是彻底和完全的,并将本发明的范围充分地传达给本领域技术人员。
在下文中,将参照附图更详细地描述本发明的示例性实施例。
如图2所示,为本发明的一种星型结构的多进程间的通信模型结构示意图,通过模型对比图可以看出,一般实时多进程间通信发明,如果需要同时与四个功能模块进行交互,则主进程需要建立四个子线程去进行交互,而本发明通过poll函数,将控制链路和功能链路有机地结合在一起进行监测,在一个线程中集中式同时监测多个通信链路的句柄,将原本需要建立多个线程或进程来完成的工作简化在一个线程中完成,并可以动态增加和删减所监测的通信链路句柄,避开通信链路在阻塞方式下一条通路花费一个进程或线程的问题,也不需要使用查询方式产生额外的系统开销,在降低了程序的复杂性的同时也增加了程序的灵活性。主进程(控制器)与子线程(处理器)间建立控制链路,主进程可以通过控制链路通知子线程从线程内部主动结束线程,简化线程异步终止时资源清理过程,规避查询方式带来的额外系统开销。
如图3所示,为本发明的一种星型结构的多进程间的通信模型框架图。
本发明从整体上看可以分为三部分:控制器部分,处理器部分和功能模块。
控制器部分:进程,负责启动处理器线程和终止处理器线程,通过控制链路控制处理器与其他模块通信链路的建立与删减及相关操作的终止等动作;
处理器部分:线程,由控制器控制其生命进程,负责监听各功能模块与其建立的通信链路句柄及控制链路句柄,与控制器和各功能模块进行交互,并进行相关的处理;
功能模块部分:线程或进程,某一具体功能模块,与处理器通过通信链路进行交互。
如图4所示,为本发明实现后,在程序运行的过程中,会存在的几个变化过程流程图。注意,图4中主进程(控制器)下面简称主进程,子线程(处理器)下面简称子线程。
过程1:主进程新建子线程,并与子进程间建立控制链路;子线程将控制链路句柄添加到poll函数监听集合中进行监听,随时处理来自主进程的控制信息。
过程2:主进程通过控制链路控制子线程与功能模块建立通信链路,子线程将通信链路句柄添加到poll函数监听集合中进行监听,此后子线程便可以随时处理来自所监听的通信链路的交互信息了。
过程3:主进程通过控制链路控制子线程断开与功能模块之间的通信链路,子线程将通信链路句柄从poll函数监听集合中删除,不再监听。
过程4:主进程通过控制链路通知子线程结束,即关闭处理器。
本发明的特点如下:
1、套接字和poll函数的组合使用,使机制灵活多变。
2、有异步终止线程的需求。通过建立的通信链路,将一般情况下的外部终止线程转换为通知线程从线程内部主动结束。
3、本发明适用于类似于网络拓扑结构中的星型结构的多进程间的通信模型中。
4、各通信链路的通信时间具有随机性。
本发明已经在POS机上蓝牙模块中被采用,并进行了测试:
1)通过蓝牙设备的打开和关闭操作可以控制监测配对请求线程的启用与终止,即发明模型中的控制器启用处理器和关闭处理器,关闭处理器过程就是通过控制链路通知线程终止。
2)通过发起配对请求操作,可以动态增加和删减线程所监测的通信链路,即发明模型中的建立和删除处理器与功能模块间的通信链路功能。
3)通过采用此发明,相比之前所采用的通过pthread_cancel通知线程终止的方法,或通过全局变量等方式在线程中循环询查方式来异步终止线程的方法,在健壮性和稳定性上有了很大的提高。
4)将此发明应用到POS机上的蓝牙模块配对功能中,在长达4000次的强度测试中功能稳定正常。
以上所述仅为本发明的实施例而已,并不用于限制本发明。本发明可以有各种合适的更改和变化。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种星型结构的多进程间的通信方法,其特征在于:
首先由控制器启动处理器,并和处理器建立控制链路,随后处理器用poll阻塞监测控制器与处理器之间的控制器链路和处理器与其他功能模块之间的功能链路;控制器通过控制链路可以控制处理器新增和删减处理器与功能模块间的通信链路及监测功能,还可以通过控制链路关闭处理器;其他功能模块则通过新增的通信链路进行具体的功能性操作交互。
2.如权利要求1所述的一种星型结构的多进程间的通信方法,其特征在于:
所述方法运行的过程中,具有如下变化过程:
过程1:控制器新建处理器,并与子进程间建立控制链路;处理器将控制链路句柄添加到poll函数监听集合中进行监听,随时处理来自控制器的控制信息;
过程2:控制器通过控制链路控制处理器与功能模块建立通信链路,处理器将通信链路句柄添加到poll函数监听集合中进行监听,此后处理器便可以随时处理来自所监听的通信链路的交互信息了;
过程3:控制器通过控制链路控制处理器断开与功能模块之间的通信链路,处理器将通信链路句柄从poll函数监听集合中删除,不再监听;
过程4:控制器通过控制链路通知处理器结束,即关闭处理器。
3.一种星型结构的多进程间的通信装置,其特征在于:
所述装置分为三部分:控制器部分,处理器部分和功能模块;
控制器部分:负责进程,负责启动处理器线程和终止处理器线程,通过控制链路控制处理器与其他模块通信链路的建立与删减及相关操作的终止等动作;
处理器部分:负责线程,由控制器控制其生命进程,负责监听各功能模块与其建立的通信链路句柄及控制链路句柄,与控制器和各功能模块进行交互,并进行相关的处理;
功能模块:负责线程或进程,某一具体功能模块,与处理器通过通信链路进行交互。
4.如权利要求3所述的一种星型结构的多进程间的通信装置,其特征在于:
所述通信装置的通信方法为:
首先由控制器启动处理器,并和处理器建立控制链路,随后处理器用poll阻塞监测控制器与处理器之间的控制器链路和处理器与其他功能模块之间的功能链路;控制器通过控制链路可以控制处理器新增和删减处理器与功能模块间的通信链路及监测功能,还可以通过控制链路关闭处理器;其他功能模块则通过新增的通信链路进行具体的功能性操作交互。
5.如权利要求4所述的一种星型结构的多进程间的通信方法,其特征在于:
所述方法运行的过程中,具有如下变化过程:
过程1:控制器新建处理器,并与子进程间建立控制链路;处理器将控制链路句柄添加到poll函数监听集合中进行监听,随时处理来自控制器的控制信息;
过程2:控制器通过控制链路控制处理器与功能模块建立通信链路,处理器将通信链路句柄添加到poll函数监听集合中进行监听,此后处理器便可以随时处理来自所监听的通信链路的交互信息了;
过程3:控制器通过控制链路控制处理器断开与功能模块之间的通信链路,处理器将通信链路句柄从poll函数监听集合中删除,不再监听;
过程4:控制器通过控制链路通知处理器结束,即关闭处理器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310198340.5A CN103294541B (zh) | 2013-05-24 | 2013-05-24 | 一种星型结构的多进程间的通信方法和装置 |
PCT/CN2014/071196 WO2014187166A1 (zh) | 2013-05-24 | 2014-01-23 | 一种星型结构的多进程间的通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310198340.5A CN103294541B (zh) | 2013-05-24 | 2013-05-24 | 一种星型结构的多进程间的通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294541A true CN103294541A (zh) | 2013-09-11 |
CN103294541B CN103294541B (zh) | 2017-04-26 |
Family
ID=49095473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310198340.5A Active CN103294541B (zh) | 2013-05-24 | 2013-05-24 | 一种星型结构的多进程间的通信方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103294541B (zh) |
WO (1) | WO2014187166A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014187166A1 (zh) * | 2013-05-24 | 2014-11-27 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
CN108881012A (zh) * | 2018-08-23 | 2018-11-23 | Oppo广东移动通信有限公司 | 链路聚合方法及相关产品 |
CN111309529A (zh) * | 2018-12-11 | 2020-06-19 | 英业达科技有限公司 | 依处理器信息完整测试处理器内通信链路的系统及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153834A1 (en) * | 2009-12-17 | 2011-06-23 | Sonus Networks, Inc. | Transparent Recovery of Transport Connections Using Packet Translation Techniques |
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
CN102223655A (zh) * | 2011-07-05 | 2011-10-19 | 上海市安全生产科学研究所 | 移动通信的底层多线程数据传输方法 |
US20120131223A1 (en) * | 2010-11-23 | 2012-05-24 | Mark Watson | Object-Based Transport Protocol |
CN102768637A (zh) * | 2011-05-05 | 2012-11-07 | 阿里巴巴集团控股有限公司 | 一种控制测试执行的方法及装置 |
US20120303774A1 (en) * | 2011-05-26 | 2012-11-29 | Mfluent Llc | Enhanced Push Notification Services |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294541B (zh) * | 2013-05-24 | 2017-04-26 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
-
2013
- 2013-05-24 CN CN201310198340.5A patent/CN103294541B/zh active Active
-
2014
- 2014-01-23 WO PCT/CN2014/071196 patent/WO2014187166A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153834A1 (en) * | 2009-12-17 | 2011-06-23 | Sonus Networks, Inc. | Transparent Recovery of Transport Connections Using Packet Translation Techniques |
US20120131223A1 (en) * | 2010-11-23 | 2012-05-24 | Mark Watson | Object-Based Transport Protocol |
CN102768637A (zh) * | 2011-05-05 | 2012-11-07 | 阿里巴巴集团控股有限公司 | 一种控制测试执行的方法及装置 |
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
US20120303774A1 (en) * | 2011-05-26 | 2012-11-29 | Mfluent Llc | Enhanced Push Notification Services |
CN102223655A (zh) * | 2011-07-05 | 2011-10-19 | 上海市安全生产科学研究所 | 移动通信的底层多线程数据传输方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014187166A1 (zh) * | 2013-05-24 | 2014-11-27 | 福建联迪商用设备有限公司 | 一种星型结构的多进程间的通信方法和装置 |
CN108881012A (zh) * | 2018-08-23 | 2018-11-23 | Oppo广东移动通信有限公司 | 链路聚合方法及相关产品 |
CN108881012B (zh) * | 2018-08-23 | 2020-09-11 | Oppo广东移动通信有限公司 | 链路聚合方法及相关产品 |
US11206209B2 (en) | 2018-08-23 | 2021-12-21 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for link aggregation and related products |
CN111309529A (zh) * | 2018-12-11 | 2020-06-19 | 英业达科技有限公司 | 依处理器信息完整测试处理器内通信链路的系统及方法 |
CN111309529B (zh) * | 2018-12-11 | 2022-04-19 | 英业达科技有限公司 | 依处理器信息完整测试处理器内通信链路的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103294541B (zh) | 2017-04-26 |
WO2014187166A1 (zh) | 2014-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020192733A1 (zh) | 定时任务配置方法、服务器、系统和计算机可读存储介质 | |
CN110222923A (zh) | 可动态配置的大数据分析系统 | |
CN100570566C (zh) | 一种异构多核间协调调度的方法及异构多核系统 | |
US8295963B2 (en) | Methods for performing data management for a recipe-and-component control module | |
US20070168082A1 (en) | Task-based robot control system for multi-tasking | |
CN104169905A (zh) | 可配置和容错的基板管理控制器安排 | |
CN106985140B (zh) | 机器人点到点运动控制方法和系统 | |
Luo et al. | Robust deadlock control of automated manufacturing systems with multiple unreliable resources | |
WO2016082546A1 (zh) | 一种虚拟机迁移决策方法及装置 | |
CN103294541A (zh) | 一种星型结构的多进程间的通信方法和装置 | |
CN109062753A (zh) | 一种硬盘监控系统以及监控方法 | |
CN106950924A (zh) | 机器人圆弧运动控制方法和系统 | |
US8332069B2 (en) | Fault tolerance method and apparatus for robot software component | |
CN105009086B (zh) | 一种实现处理器切换的方法、计算机和切换装置 | |
CN109104347A (zh) | 基于CANopen协议传输数据的网关轮换方法、系统及其装置 | |
CN110888836A (zh) | 一种在飞腾平台使用bmc实现中断响应的方法 | |
CN207209640U (zh) | 一种电梯远程监控系统 | |
CN109104304A (zh) | 一种分布式实时故障处理方法 | |
US8301273B2 (en) | Method for providing functions in an industrial automation system, control program and industrial automation system | |
CN101256519A (zh) | 异构多核系统及基于该系统的串口控制自动切换方法 | |
CN107924722A (zh) | 核电站安全管理系统 | |
CN101217520A (zh) | 无线分组域网关性能自适应的方法及装置 | |
CN106956265A (zh) | 基于ros和orocos的机器人运动规划的执行方法和系统 | |
JP2010108504A (ja) | ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法 | |
JP2008054028A (ja) | 制御情報伝送システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |