一种通信优化方法及系统技术方案

技术编号:16919064 阅读:28 留言:0更新日期:2017-12-31 14:44
本发明专利技术提供一种通信优化方法及系统,所述的方法包括:S1,为每一个客户端进程创建对应的命名管道;S2,将所有的命名管道句柄绑定到服务器的完成端口上,其中,完成端口运行于后台线程中;S3,通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行处理。本发明专利技术通过创建一个完成端口,将与客户端进程对应的所有命名管道句柄都绑定到完成端口上,利用完成端口来管理所有客户端的异步I/O操作,而完成端口只需要在一个后台线程中运行即可,因此,实现了通过一个后台线程就可以处理多个客户端的请求事件,相比传统的需要多个线程,避免了线程阻塞的问题,以及提高了CPU的处理效率。

【技术实现步骤摘要】
一种通信优化方法及系统
本专利技术涉及通信
,更具体地,涉及一种通信优化方法及系统。
技术介绍
在大型开发过程中,为了提高程序的运算效率与稳定性,充分利用计算机CPU的性能,通常会创建多个进程来实现核心的服务功能,由于每个进程都是一个独立的实例,所以会涉及到多进程之间通信的问题。传统方案是采用多线程技术方案,采用多个线程对多个进程进行管理,即针对每一个客户端进程,就需要一个对应的线程对该客户端进程进行管理,这样在后台的线程会有很多个,会增加程序资源大量的消耗。另外,由于线程太多,CPU需要花费更多的时间来调度和切换这些线程,造成CPU处理效率低下,频繁的线程阻塞和唤醒阻塞对CPU造成的负荷加重,会严重影响程序的运行性能问题。
技术实现思路
本专利技术提供一种克服上述问题或者至少部分地解决上述问题的通信优化方法及系统。根据本专利技术的第一个方面,提供了一种通信优化方法,包括:S1,为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道的接口函数与服务器完成异步I/O操作;S2,将所有的命名管道句柄绑定到服务器的完成端口上,其中,所述完成端口运行于服务器的后台线程中;S3,通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。本专利技术的有益效果为:通过在服务器创建一个完成端口,将与客户端进程对应的所有命名管道句柄都绑定到完成端口上,利用完成端口来管理所有客户端的异步I/O操作,而完成端口只需要在一个后台线程中运行即可,因此,实现了通过一个后台线程就可以处理多个客户端的请求事件,相比传统的需要多个线程,避免了线程阻塞的问题,以及提高了CPU的处理效率。在上述技术方案的基础上,本专利技术还可以作如下改进。进一步的,所述步骤S1中为每一个客户端进程创建对应的命名管道进一步包括:调用CreatNamePipe接口函数为每一个客户端进程创建对应的命名管道,并保存该接口函数返回的每一个命名管道句柄。进一步的,所述步骤S1之前还包括:在服务器定义异步调用overlapped结构体,该结构体用于实现I/O接口的异步调用;相应地,所述步骤S1还包括:通过向命名管道上的接口函数传递overlapped结构体参数,实现该接口函数的异步调用。进一步的,所述步骤S2还包括:基于接口函数,在服务器上创建完成端口,并保存该接口函数返回的完成端口句柄;基于该接口函数,将所有命名管道句柄绑定到完成端口上,以便于通过完成端口管理所有的命名管道。进一步的,所述步骤S3中通过完成端口获取每一个命名管道上的异步I/O操作进一步包括:通过完成端口接收每一个客户端进程与服务器进行的异步I/O操作,并将所有的异步I/O操作按照时间顺序存储于队列中,其中,每一个客户端进程通过相应的命名管道与服务器进行异步I/O操作。进一步的,所述步骤S2还包括:调用CreatThreat函数在服务器创建一个后台线程,使得所述完成端口运行于所述后台线程中;相应地,所述步骤S3还包括:后台线程通过调用GetQueuedCompletionStatus接口函数获取完成端口的队列中存储的异步I/O操作。进一步的,所述步骤S3中根据每一个异步I/O操作的类型,调用相应的函数方法进行处理进一步包括:若异步I/O操作为连接请求I/O事件,则调用ConnectNamedPipe函数等待下一个客户端连接;若异步I/O操作为读请求I/O事件,则调用ReadFile函数接口从客户端发送的数据;若异步I/O操作为写请求I/O事件,则调用WriteFile函数向客户端发送数据。根据本专利技术的第二个方面,提供了一种通信优化系统,包括:创建模块,用于为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道上的接口函数与服务器完成异步I/O操作;绑定模块,用于将所有的命名管道句柄绑定到服务器完成端口上,其中,所述完成端口运行于服务器的后台线程中;获取模块,用于通过完成端口获取每一个命名管道上的异步I/O操作;处理模块,用于根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。根据本专利技术的第三方面,提供了一种通信优化方法的设备,包括处理器、存储器和总线;所述处理器和存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行通信优化方法。根据本专利技术的第四方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行通信优化方法。附图说明图1为本专利技术一个实施例的通信优化方法流程图;图2为本专利技术另一个实施例的通信优化系统连接框图;图3为本专利技术又一个实施例的通信优化系统整体连接框图;图4为本专利技术再一个实施例的通信优化方法的设备连接框图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。参见图1,提供了本专利技术一个实施例的通信优化方法,包括:S1,为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道上的接口函数与服务器完成异步I/O操作;S2,将所有的命名管道句柄绑定到服务器的完成端口上,其中,完成端口运行于服务器的后台线程中;S3,通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行处理。在大型项目开发过程中,为了提高程序的运算效率与稳定性,都会创建多个进程来实现核心的服务器功能,由于每一个进程都是一个独立的实例,所以会涉及多进程之间的通信问题。目前通常是采用多线程技术,在多个线程中实现同步调用,对于现有技术,需要在服务器上创建多个线程,通过每一个线程来对对应的客户端进程实现管理。这种在后台创建多个线程的方式,会导致线程阻塞的状况,影响程序的运行性能。因此,本实施例提供了一套只需要在后台服务器创建一个线程就能对所有的客户端进程进行管理的方法,具体的,该方法的具体实现为,为每一个客户端进程创建对应的命名管道,其中,一个客户端进程需要创建对应的一个命名管道。每一个客户端进程通过调用对应的命名管道上的接口函数实现与服务器的通信,在本实施例中,每一个客户端进程通过异步调用命名管道上的接口函数来实现与服务器的异步I/O操作。然后在服务器创建一个完成端口,将前述创建的所有命名管道的句柄绑定到完成端口上,其中,句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例。句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象,应用程序能够通过句柄访问相应对象的信息。因此,通过将所有命名管道的句柄绑定到完成端口上,通过完成端口来获取所有命名管道的信息,来管理所有的命名管道,其中,完成端口运行于一个后台线程上,因此,只需要一个后台线程即可以实现对所有命名管道的管理。随后,通过完成端口获取每一个客户端进程经过命名管道与服务器进行的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行处理。本实施例通过在服务器创建一个完成端口,将与客户端本文档来自技高网...
一种通信优化方法及系统

【技术保护点】
一种通信优化方法,其特征在于,包括:S1,为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道的接口函数与服务器完成异步I/O操作;S2,将所有的命名管道句柄绑定到服务器的完成端口上,其中,所述完成端口运行于服务器的后台线程中;S3,通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。

【技术特征摘要】
1.一种通信优化方法,其特征在于,包括:S1,为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道的接口函数与服务器完成异步I/O操作;S2,将所有的命名管道句柄绑定到服务器的完成端口上,其中,所述完成端口运行于服务器的后台线程中;S3,通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。2.如权利要求1所述的通信优化方法,其特征在于,所述步骤S1中为每一个客户端进程创建对应的命名管道进一步包括:调用CreatNamePipe接口函数为每一个客户端进程创建对应的命名管道,并保存该接口函数返回的每一个命名管道句柄。3.如权利要求1所述的通信优化方法,其特征在于,所述步骤S1之前还包括:在服务器定义异步调用overlapped结构体,该结构体用于实现I/O接口的异步调用;相应地,所述步骤S1还包括:通过向命名管道上的接口函数传递overlapped结构体参数,实现该接口函数的异步调用。4.如权利要求2所述的通信优化方法,其特征在于,所述步骤S2还包括:基于接口函数,在服务器上创建完成端口,并保存该接口函数返回的完成端口句柄;基于该接口函数,将所有命名管道句柄绑定到完成端口上,以便于通过完成端口管理所有的命名管道。5.如权利要求4所述的通信优化方法,其特征在于,所述步骤S3中通过完成端口获取每一个命名管道上的异步I/O操作进一步包括:通过完成端口接收每一个客户端进程与服务器进行的异步I/O操作,并将所有的异步I/O操作按照时间顺序存储于队列中,其中,每一个客户端进程通过相应的命名管道与服务器进行异步I/O操作。6.如权利要求5所述的通信优化方法,其特征在...

【专利技术属性】
技术研发人员:黄浩张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1