一种星型结构的多进程间的通信方法和装置与流程

文档序号:11964601阅读:308来源:国知局
一种星型结构的多进程间的通信方法和装置与流程
本发明涉及通信领域,特别是提出了一种星型结构的多进程间的通信方法和装置。

背景技术:
在进行蓝牙相关的多线程编程时,遇到这样的需求:一个进程需要与其他多个进程或线程进行数据交互,且交互的数据量不大,但数据交互的时间具有随机性,即要能阻塞监听等待通信链路;需要能异步终止线程。一般情况下要同时与多个进程或线程进行数据通信,则每条通信链路需要建立一个进程或线程去阻塞等待事件的发生,这样程序会比较复杂。异步终止线程则一般使用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次的强度测试中功能稳定正常。以上所述仅为本发明的实施例而已,并不用于限制本发明。本发明可以有各种合适的更改和变化。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1