[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

WO2019047441A1 - 一种通信优化方法及系统 - Google Patents

一种通信优化方法及系统 Download PDF

Info

Publication number
WO2019047441A1
WO2019047441A1 PCT/CN2017/120151 CN2017120151W WO2019047441A1 WO 2019047441 A1 WO2019047441 A1 WO 2019047441A1 CN 2017120151 W CN2017120151 W CN 2017120151W WO 2019047441 A1 WO2019047441 A1 WO 2019047441A1
Authority
WO
WIPO (PCT)
Prior art keywords
asynchronous
server
named pipe
completion port
function
Prior art date
Application number
PCT/CN2017/120151
Other languages
English (en)
French (fr)
Inventor
黄浩
张文明
陈少杰
Original Assignee
武汉斗鱼网络科技有限公司
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 武汉斗鱼网络科技有限公司 filed Critical 武汉斗鱼网络科技有限公司
Publication of WO2019047441A1 publication Critical patent/WO2019047441A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Definitions

  • the present invention relates to the field of communications technologies, and in particular, to a communication optimization method and system.
  • the traditional solution is to adopt a multi-threading technology scheme, which uses multiple threads to manage multiple processes, that is, for each client process, a corresponding thread needs to be managed by the client process, so that there are many threads in the background. This will increase the consumption of a large amount of program resources.
  • the CPU needs to spend more time to schedule and switch these threads, resulting in inefficient CPU processing. Frequent thread blocking and wake-up blocking increase the load on the CPU, which will seriously affect the running performance of the program.
  • the present invention provides a communication optimization method and system that overcomes the above problems or at least partially solves the above problems.
  • a communication optimization method comprising:
  • the beneficial effects of the present invention are: by creating a completion port on the server, binding all named pipe handles corresponding to the client process to the completion port, and using the completion port to manage asynchronous I/O operations of all clients, and completing The port only needs to run in a background thread. Therefore, it can handle the request events of multiple clients through a background thread. Compared with the traditional one, multiple threads are avoided, the thread blocking problem is avoided, and the CPU is improved. Processing efficiency.
  • the present invention can also be improved as follows.
  • step of creating a corresponding named pipe for each client process in the step S1 further includes:
  • the method further includes:
  • the server definition asynchronously calls the overlapped structure, which is used to implement asynchronous calls of the I/O interface;
  • step S1 further includes:
  • the asynchronous call of the interface function is implemented by passing the overlapped structure body parameter to the interface function on the named pipe.
  • step S2 further includes:
  • obtaining the asynchronous I/O operation on each named pipe by completing the port in the step S3 further includes:
  • step S2 further includes:
  • step S3 further includes:
  • the background thread obtains the asynchronous I/O operations stored in the queue of the completion port by calling the GetQueuedCompletionStatus interface function.
  • calling the corresponding function method for processing further includes:
  • the ConnectNamedPipe function is called to wait for the next client connection
  • the asynchronous I/O operation is a read request I/O event
  • the data sent from the client by the ReadFile function interface is called
  • the WriteFile function is called to send data to the client.
  • a communication optimization system comprising:
  • a binding module configured to bind all the named pipe handles to the server completion port, wherein the completion port runs in a background thread of the server;
  • the processing module is configured to call the corresponding function method to perform corresponding processing according to the type of each asynchronous I/O operation.
  • an electronic device including a processor, a memory, and a bus is provided;
  • the processor and the memory complete communication with each other through the bus;
  • the memory stores program instructions executable by the processor, the processor invoking the program instructions to perform a communication optimization method.
  • a non-transitory computer readable storage medium storing computer instructions that cause the computer to perform a communication optimization method.
  • FIG. 1 is a flowchart of a communication optimization method according to an embodiment of the present invention.
  • FIG. 2 is a block diagram showing a connection of a communication optimization system according to another embodiment of the present invention.
  • FIG. 3 is a block diagram showing the overall connection of a communication optimization system according to still another embodiment of the present invention.
  • FIG. 4 is a block diagram showing the connection of an electronic device according to an embodiment of the present invention.
  • a communication optimization method including: S1, creating a corresponding named pipe for each client process, wherein each client process calls an interface function and a server on a corresponding named pipe.
  • S2 bind all named pipe handles to the server's completion port, where the completion port runs in the server's background thread;
  • this embodiment provides a method for managing all client processes only by creating a thread in the background server.
  • the specific implementation of the method is to create a corresponding name for each client process.
  • Pipeline where a client process needs to create a corresponding named pipe.
  • Each client process implements communication with the server by calling an interface function on the corresponding named pipe.
  • each client process asynchronously calls the interface function on the named pipe to implement asynchronous I/O with the server. operating.
  • the handle is a unique integer used by windows to mark up or be used in an application. Windows uses a large number of handles to mark many objects, and the application can access the information of the corresponding object through the handle. Therefore, all the named pipes are managed by binding the handles of all named pipes to the completion port and obtaining the information of all named pipes by completing the port.
  • the completion port runs on a background thread, so only one is needed. The background thread can manage all named pipes. Then, through the completion port, each client process obtains asynchronous I/O operations through the named pipe and the server, and according to the type of each asynchronous I/O operation, calls the corresponding function method for processing.
  • the step of creating a corresponding named pipe for each client process in step S1 further includes: calling a CreateNamePipe interface function to create a corresponding named pipe for each client process. And save each named pipe handle returned by the interface function.
  • this embodiment calls the CreateNamePipe interface function to create a corresponding named pipe for each client process, and saves each named pipe PipeHandle handle returned by the interface function.
  • the method before the step S1, further includes: defining, in the server, an overlapped structure, where the structure is used to implement an asynchronous call of the I/O interface;
  • the step S1 further includes: implementing an asynchronous call of the interface function by transmitting an overlapped structure body parameter to an interface function on the named pipe.
  • Each named pipe has multiple interface functions, such as ConnectNamePipe, WriteFile, and ReadFile.
  • this embodiment defines an asynchronous call structure in the server, called an overlapped structure.
  • the asynchronous call structure is mainly used to operate an asynchronous I/O interface.
  • the asynchronous call of the interface function is realized by passing the overlapped structure body parameter to the interface function on the named pipe, and each client process can realize the asynchronous I/O operation with the server by asynchronously calling the interface function on the corresponding named pipe.
  • the step S2 further includes: calling the CreateIoCompletionPort interface function to create a completion port on the server, and saving the completion port handle returned by the interface function;
  • the function binds all named pipe handles to the completion port to manage all named pipes through the completion port.
  • the specific implementation of creating a completion port on the server is to create a completion port in the background by calling the CreateIoCompletionPort(PipeHandle) interface function, and save the port Handle handle of the completion port.
  • the function of this interface function is to bind each named pipe PipeHandle handle to the completion port PortHandle, so that the completion port can manage asynchronous I/O operations on all named pipes.
  • the completion port is the kernel object maintained by the operating system.
  • the I/O operation is characterized by fast speed and large amount of concurrency.
  • the completion port can manage asynchronous I/O operations of tens of thousands of named pipes, that is, it can receive tens of thousands.
  • the connection of the client process, the completion port only needs to run in a background thread, that is, the management of all processes can be realized through one thread.
  • obtaining the asynchronous I/O operation on each named pipe by completing the port in the step S3 further includes: receiving each client process through the completion port and The asynchronous I/O operation performed by the server, and all asynchronous I/O operations are stored in the queue in chronological order, wherein each client process performs asynchronous I/O operations with the server through the corresponding named pipes.
  • the above embodiment creates a completion port in the background, and manages the asynchronous I/O operations of all named pipes through the completion port.
  • the completion is completed.
  • the port receives asynchronous I/O operations from each client process through the corresponding named pipe and the server, and stores the asynchronous I/O operations in the queue according to the request time sequence.
  • the step S2 further includes: calling a CreatThreat function to create a background thread, so that the completion port runs in the background thread; correspondingly, the step S3 further includes: the background thread acquires a queue for storing the asynchronous I/O operation in the completion port by calling the GetQueuedCompletionStatus interface function.
  • a background thread needs to be created on the server.
  • the CreatThreat function is called to create a background thread, so that the completion port runs in the background thread, and the role of creating the background thread is mainly responsible for Acquire asynchronous I/O operations in the queue on the completion port.
  • the background thread obtains the queue for storing the asynchronous I/O operation in the completion port by calling the GetQueuedCompletionStatus(overLapped) interface function, and then acquires the asynchronous I/O operation of each named pipe.
  • step S3 according to the type of each asynchronous I/O operation, calling the corresponding function method for processing further includes: if the asynchronous I/O operation is The connection request I/O event calls the ConnectNamedPipe function to wait for the next client connection; if the asynchronous I/O operation is a read request I/O event, the ReadFile function interface is called to send data from the client; if the asynchronous I/O operation To write a request I/O event, the WriteFile function is called to send data to the client.
  • the above-mentioned background thread obtains asynchronous I/O operations of each named pipe through the completion port.
  • the background thread calls different functions to asynchronous I according to the type of asynchronous I/O operation.
  • the /O operation is processed. Specifically, if the asynchronous I/O operation is a connection request I/O event, the ConnectNamedPipe function is called to wait for the next client connection; if the asynchronous I/O operation is a read request I/O event, the ReadFile function interface is called from the client. The transmitted data; if the asynchronous I/O operation is a write request I/O event, the WriteFile function is called to send data to the client. If no asynchronous I/O operations are completed, the background thread sleeps until the asynchronous I/O event automatically wakes up the thread.
  • a communication optimization system including a creation module 21, a binding module 22, an acquisition module 23, and a processing module 24.
  • the creating module 21 is configured to create a corresponding named pipe for each client process, wherein each client process completes an asynchronous I/O operation with the server by calling an interface function on the corresponding named pipe.
  • the binding module 22 is configured to bind all named pipe handles to the server completion port, wherein the completion port runs in a background thread of the server.
  • the obtaining module 23 is configured to acquire asynchronous I/O operations on each named pipe through the completion port.
  • the processing module 24 is configured to invoke a corresponding function method to perform corresponding processing according to the type of each asynchronous I/O operation.
  • the creating module 21 is specifically configured to: call the CreateNamePipe interface function to create a corresponding named pipe for each client process, and save each named pipe handle returned by the interface function.
  • the communication optimization system provided by this embodiment further includes a definition module 24 and an asynchronous call module 25.
  • the definition module 24 is configured to define an overlapped structure at the server, and the structure is used to implement an asynchronous call of the I/O interface.
  • the asynchronous call module 25 is configured to implement an asynchronous call of the interface function by passing an overlapped structure body parameter to an interface function on the named pipe.
  • the creation module 21 is further configured to: call the CreateIoCompletionPort interface function to create a completion port on the server, and save the completion port handle returned by the interface function.
  • the binding module 22 is further configured to: according to the interface function, bind all named pipe handles to the completion port, so as to manage all named pipes through the completion port.
  • the obtaining module 23 is specifically configured to: receive, by the completion port, asynchronous I/O operations performed by each client process and the server, and store all asynchronous I/O operations in a queue in chronological order, wherein each client process Asynchronous I/O operations with the server through the corresponding named pipes.
  • the creating module 21 is further configured to: call a CreatThreat function to create a background thread, so that the completion port runs in the background thread;
  • the obtaining module 23 is further configured to: obtain a queue for storing asynchronous I/O operations in the completion port by calling the GetQueuedCompletionStatus interface function.
  • the processing module 24 is specifically configured to: if the asynchronous I/O operation is a connection request I/O event, call the ConnectNamedPipe function to wait for the next client connection.
  • the asynchronous I/O operation is a read request I/O event
  • the data sent from the client by the ReadFile function interface is called.
  • the WriteFile function is called to send data to the client.
  • an electronic device includes a processor 401, a memory 402, and a bus 403.
  • the processor 401 and the memory 402 complete communication with each other through the bus 403. .
  • the processor 401 is configured to invoke the program instructions in the memory 402 to perform the methods provided in the foregoing method embodiments, for example, including: creating a corresponding named pipe for each client process, where each client The process completes the asynchronous I/O operation with the server by calling the interface function corresponding to the named pipe; binding all the named pipe handles to the completion port of the server, wherein the completion port runs in the background thread of the server; Get the asynchronous I / O operation on each named pipe, and according to the type of each asynchronous I / O operation, call the corresponding function method for corresponding processing.
  • the invention discloses a computer program product comprising a computer program stored on a non-transitory computer readable storage medium, the computer program comprising program instructions, the computer being capable of executing the corresponding implementation when the program instructions are executed by the computer
  • the intelligent filtering control layout method provided by the example includes, for example, creating a corresponding named pipe for each client process, wherein each client process completes an asynchronous I/O operation with the server by calling an interface function corresponding to the named pipe; Bind all named pipe handles to the server's completion port, where the completion port runs in the server's background thread; acquires asynchronous I/O operations on each named pipe through the completion port, and according to each asynchronous The type of I/O operation, call the corresponding function method for corresponding processing.
  • the present invention also provides a non-transitory computer readable storage medium storing computer instructions for causing a computer to execute the smart layout control method provided by the corresponding embodiment, for example, including : Create a corresponding named pipe for each client process, where each client process completes the asynchronous I/O operation with the server by calling the interface function corresponding to the named pipe; binding all named pipe handles to the completion port of the server The completion port runs in a background thread of the server; obtains an asynchronous I/O operation on each named pipe through the completion port, and invokes a corresponding function method according to the type of each asynchronous I/O operation. Corresponding processing.
  • the foregoing program may be stored in a computer readable storage medium, and the program is executed when executed.
  • the foregoing steps include the steps of the foregoing method embodiments; and the foregoing storage medium includes: a medium that can store program codes, such as a ROM, a RAM, a magnetic disk, or an optical disk.
  • the invention provides a communication optimization method and system, by creating a completion port in the background, binding all named pipe handles corresponding to the client process to the completion port, and using the completion port to manage the asynchronous of all client processes.
  • I / O operation and the completion port only needs to run in a background thread, therefore, it can handle the request events of multiple clients through a background thread, which avoids thread blocking compared to the traditional need for multiple threads.
  • the problem, as well as improving the processing efficiency of the CPU, and optimizing the existing synchronous calling mode to the asynchronous calling mode reduces the burden on the thread.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

一种通信优化方法及系统,所述的方法包括:为每一个客户端进程创建对应的命名管道;将所有的命名管道句柄绑定到服务器的完成端口上,其中,完成端口运行于服务器的后台线程中(S2);通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行处理(S3)。该方法通过创建一个完成端口,将与客户端进程对应的所有命名管道句柄都绑定到完成端口上,利用完成端口来管理所有客户端的异步I/O操作,而完成端口只需要在一个后台线程中运行即可,因此,实现了通过一个后台线程就可以处理多个客户端的请求事件,相比传统的需要多个线程,避免了线程阻塞的问题,以及提高了CPU的处理效率。

Description

一种通信优化方法及系统
交叉引用
本申请引用于2017年9月6日提交的专利名称为“一种通信优化方法及系统”的第201710797002.1号中国专利申请,其通过引用被全部并入本申请。
技术领域
本发明涉及通信技术领域,更具体地,涉及一种通信优化方法及系统。
背景技术
在大型开发过程中,为了提高程序的运算效率与稳定性,充分利用计算机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操作的类型,调用相应的函数方法进行处理。
本实施例通过在服务器创建一个完成端口,将与客户端进程对应的所有命名管道句柄都绑定到完成端口上,利用完成端口来管理所有客户端的异步I/O操作,而完成端口只需要在一个后台线程中运行即可,因此,实现了通过一个后台线程就可以处理多个客户端的请求事件,相比传统的需要多个线程,避免了线程阻塞的问题,以及提高了CPU的处理效率。
在上述实施例的基础上,本发明的一个实施例中,所述步骤S1中为每一个客户端进程创建对应的命名管道进一步包括:调用CreatNamePipe接口函数为每一个客户端进程创建对应的命名管道,并保存该接口函数返回的每一个命名管道句柄。
在为客户端进程创建对应的命名管道时,本实施例是调用CreatNamePipe 接口函数为每一个客户端进程创建对应的命名管道,并保存该接口函数返回的每一个命名管道PipeHandle句柄。
在上述各实施例的基础上,本发明的另一个实施例中,所述步骤S1之前还包括:在服务器定义overlapped结构体,该结构体用于实现I/O接口的异步调用;相应地,所述步骤S1还包括:通过向命名管道上的接口函数传递overlapped结构体参数实现该接口函数的异步调用。
每一个命名管道上具有多个接口函数,比如,ConnectNamePipe、WriteFile和ReadFile等相关接口函数,为实现这些接口函数的异步调用,本实施例在服务器定义一个异步调用结构体,称之为overlapped结构体,该异步调用结构体主要用于操作异步I/O接口。其中,通过向命名管道上的接口函数传递overlapped结构体参数实现该接口函数的异步调用,每一个客户端进程可通过异步调用对应命名管道上的接口函数实现与服务器的异步I/O操作。
在上述各实施例的基础上,本发明的另一个实施例中,所述步骤S2还包括:调用CreatIoCompletionPort接口函数在服务器上创建完成端口,并保存该接口函数返回的完成端口句柄;基于该接口函数将所有命名管道句柄绑定到完成端口上,以便于通过完成端口管理所有的命名管道。
在服务器上创建完成端口的具体实现为,通过调用CreatIoCompletionPort(PipeHandle)接口函数在后台创建一个完成端口,并将完成端口PortHandle句柄保存起来。该接口函数的作用就是将每一个命名管道PipeHandle句柄绑定到完成端口PortHandle上,这样完成端口就能够管理所有的命名管道上的异步I/O操作。
其中,完成端口是操作系统维护的内核对象,在I/O操作上的特点是速度快以及并发量大,完成端口可以管理上万个命名管道的异步I/O操作,也就是可以接收上万个客户端进程的连接,完成端口只需要运行在一个后台线程,也即通过一个线程即可实现对所有进程的管理。
在上述各实施例的基础上,本发明的一个实施例中,所述步骤S3中通过完成端口获取每一个命名管道上的异步I/O操作进一步包括:通过完成端口接收每一个客户端进程与服务器进行的异步I/O操作,并将所有的异步 I/O操作按照时间顺序存储于队列中,其中,每一个客户端进程通过相应的命名管道与服务器进行异步I/O操作。
上述实施例在后台创建了一个完成端口,通过完成端口对所有命名管道的异步I/O操作进行管理,当每一个客户端进程通过异步调用对应命名管道的接口函数实现与服务器的操作时,完成端口接收每一个客户端进程通过相应的命名管道与服务器进行的异步I/O操作,并按照请求时间顺序将异步I/O操作存储于队列中。
在上述各个实施例的基础上,本发明的另一个实施例中,所述步骤S2还包括:调用CreatThreat函数创建一个后台线程,使得所述完成端口运行于所述后台线程中;相应地,所述步骤S3还包括:后台线程通过调用GetQueuedCompletionStatus接口函数获取完成端口中存储异步I/O操作的队列。
在整个实现的过程中,还需要在服务器上创建一个后台线程,具体为,调用CreatThreat函数创建一个后台线程,使得所述完成端口运行于所述后台线程中,创建后台线程的作用主要是负责从完成端口上获取队列中的异步I/O操作。具体为后台线程通过调用GetQueuedCompletionStatus(overLapped)接口函数获取完成端口中存储异步I/O操作的队列,进而获取到每一个命名管道的异步I/O操作。
在上述各实施例的基础上,本发明的一个实施例中,所述步骤S3中根据每一个异步I/O操作的类型,调用相应的函数方法进行处理进一步包括:若异步I/O操作为连接请求I/O事件,则调用ConnectNamedPipe函数等待下一个客户端连接;若异步I/O操作为读请求I/O事件,则调用ReadFile函数接口从客户端发送的数据;若异步I/O操作为写请求I/O事件,则调用WriteFile函数向客户端发送数据。
上述的后台线程通过完成端口获取到每一个命名管道的异步I/O操作,异步I/O操作通常有3种类型,后台线程根据异步I/O操作的类型,分别调用不同的函数对异步I/O操作进行处理。具体为,若异步I/O操作为连接请求I/O事件,则调用ConnectNamedPipe函数等待下一个客户端连接;若异 步I/O操作为读请求I/O事件,则调用ReadFile函数接口从客户端发送的数据;若异步I/O操作为写请求I/O事件,则调用WriteFile函数向客户端发送数据。若没有异步I/O操作完成,则会使后台线程休眠,直到有异步I/O事件时自动唤醒线程。
参见图2,提供了本发明另一个实施例的通信优化系统,包括创建模块21、绑定模块22、获取模块23和处理模块24。
创建模块21,用于为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道上的接口函数与服务器完成异步I/O操作。
绑定模块22,用于将所有的命名管道句柄绑定到服务器完成端口上,其中,所述完成端口运行于服务器的后台线程中。
获取模块23,用于通过完成端口获取每一个命名管道上的异步I/O操作。
处理模块24,用于根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。
其中,创建模块21具体用于:调用CreatNamePipe接口函数为每一个客户端进程创建对应的命名管道,并保存该接口函数返回的每一个命名管道句柄。
参见图3,在上述实施例的基础上,本实施例提供的通信优化系统还包括定义模块24和异步调用模块25。
定义模块24,用于在服务器定义overlapped结构体,该结构体用于实现I/O接口的异步调用。
异步调用模块25,用于通过向命名管道上的接口函数传递overlapped结构体参数,实现该接口函数的异步调用。
创建模块21还用于:调用CreatIoCompletionPort接口函数在服务器上创建完成端口,并保存该接口函数返回的完成端口句柄。
相应地,绑定模块22,还用于:基于该接口函数,将所有命名管道句柄绑定到完成端口上,以便于通过完成端口管理所有的命名管道。
获取模块23具体用于:通过完成端口接收每一个客户端进程与服务器进行的异步I/O操作,并将所有的异步I/O操作按照时间顺序存储于队列中,其中,每一个客户端进程通过相应的命名管道与服务器进行异步I/O操作。
创建模块21,还用于:调用CreatThreat函数创建一个后台线程,使得所述完成端口运行于所述后台线程中;
相应地,获取模块23,还用于:通过调用GetQueuedCompletionStatus接口函数获取完成端口中存储异步I/O操作的队列。
处理模块24具体用于:若异步I/O操作为连接请求I/O事件,则调用ConnectNamedPipe函数等待下一个客户端连接。
若异步I/O操作为读请求I/O事件,则调用ReadFile函数接口从客户端发送的数据。
若异步I/O操作为写请求I/O事件,则调用WriteFile函数向客户端发送数据。
参见图4,为本发明一种电子设备,包括:处理器(processor)401、存储器(memory)402和总线403;其中,所述处理器401和存储器402通过所述总线403完成相互间的通信。
所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道的接口函数与服务器完成异步I/O操作;将所有的命名管道句柄绑定到服务器的完成端口上,其中,所述完成端口运行于服务器的后台线程中;通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。
本发明公开一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述对应实施例所提供的智能过滤的控件布局方法,例如包括:为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道的接口函数与服务器完成异步I/O 操作;将所有的命名管道句柄绑定到服务器的完成端口上,其中,所述完成端口运行于服务器的后台线程中;通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。
本发明还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述对应实施例所提供的智能过滤的控件布局方法,例如包括:为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道的接口函数与服务器完成异步I/O操作;将所有的命名管道句柄绑定到服务器的完成端口上,其中,所述完成端口运行于服务器的后台线程中;通过完成端口获取每一个命名管道上的异步I/O操作,并根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例 或者实施例的某些部分方法。
本发明提供的一种通信优化方法及系统,通过在后台创建一个完成端口,将与客户端进程对应的所有命名管道句柄都绑定到完成端口上,利用完成端口来管理所有客户端进程的异步I/O操作,而完成端口只需要在一个后台线程中运行即可,因此,实现了通过一个后台线程就可以处理多个客户端的请求事件,相比传统的需要多个线程,避免了线程阻塞的问题,以及提高了CPU的处理效率,并且向现有的同步调用方式优化为异步调用方式,减小了线程的负担。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

  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所述的通信优化方法,其特征在于,所述步骤S2还包括:
    调用CreatThreat函数在服务器创建一个后台线程,使得所述完成端口运行于所述后台线程中;
    相应地,所述步骤S3还包括:
    后台线程通过调用GetQueuedCompletionStatus接口函数获取完成端口的队列中存储的异步I/O操作。
  7. 如权利要求6所述的通信优化方法,其特征在于,所述步骤S3中根据每一个异步I/O操作的类型,调用相应的函数方法进行处理进一步包括:
    若异步I/O操作为连接请求I/O事件,则调用ConnectNamedPipe函数等待下一个客户端连接;
    若异步I/O操作为读请求I/O事件,则调用ReadFile函数接口从客户端发送的数据;
    若异步I/O操作为写请求I/O事件,则调用WriteFile函数向客户端发送数据。
  8. 一种通信优化系统,其特征在于,包括:
    创建模块,用于为每一个客户端进程创建对应的命名管道,其中,每一个客户端进程通过调用对应命名管道上的接口函数与服务器完成异步I/O操作;
    绑定模块,用于将所有的命名管道句柄绑定到服务器完成端口上,其中,所述完成端口运行于服务器的后台线程中;
    获取模块,用于通过完成端口获取每一个命名管道上的异步I/O操作;
    处理模块,用于根据每一个异步I/O操作的类型,调用相应的函数方法进行相应的处理。
  9. 一种电子设备,其特征在于,包括:
    至少一个处理器、至少一个存储器、通信接口和总线;
    其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
    所述通信接口用于该设备与玩具控制系统的通信设备之间的信息传输;
    所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-7任一项所述的方法。
  10. 一种计算机程序产品,其特征在于,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,所述计算机指令使所述计算机执行如权利要求1-7任一项所述的方法。
  11. 一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1-7任一项所述的方法。
PCT/CN2017/120151 2017-09-06 2017-12-29 一种通信优化方法及系统 WO2019047441A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710797002.1A CN107526645B (zh) 2017-09-06 2017-09-06 一种通信优化方法及系统
CN201710797002.1 2017-09-06

Publications (1)

Publication Number Publication Date
WO2019047441A1 true WO2019047441A1 (zh) 2019-03-14

Family

ID=60683718

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/120151 WO2019047441A1 (zh) 2017-09-06 2017-12-29 一种通信优化方法及系统

Country Status (2)

Country Link
CN (1) CN107526645B (zh)
WO (1) WO2019047441A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992433A (zh) * 2019-04-11 2019-07-09 苏州浪潮智能科技有限公司 一种分布式tgt通信优化方法、装置、设备及存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018908B (zh) * 2018-01-08 2021-05-28 武汉斗鱼网络科技有限公司 一种进程间通信方法、电子设备及可读存储介质
CN108833578B (zh) * 2018-06-30 2021-07-23 武汉斗鱼网络科技有限公司 基于fifo命名管道进行双工通信的方法及相关设备
CN110688203B (zh) * 2018-07-05 2022-05-13 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN109062686B (zh) * 2018-07-09 2021-04-23 武汉斗鱼网络科技有限公司 多进程管理方法、存储介质、电子设备及系统
CN109947799B (zh) * 2018-07-25 2023-03-24 光大环境科技(中国)有限公司 对历史数据进行反压缩读取的方法及装置
CN109086380B (zh) * 2018-07-25 2022-09-16 光大环境科技(中国)有限公司 对历史数据进行压缩存储的方法及系统
CN111385251A (zh) * 2018-12-28 2020-07-07 武汉斗鱼网络科技有限公司 一种提高客户端运行稳定性的方法、系统、服务器及存储介质
CN110535940B (zh) * 2019-08-29 2023-01-24 北京浪潮数据技术有限公司 一种bmc的连接管理方法、系统、设备及存储介质
CN112114955B (zh) * 2020-09-28 2021-05-14 广州锦行网络科技有限公司 Windows平台下实现单进程单线程完成端口的方法
CN113760986A (zh) * 2021-01-29 2021-12-07 北京沃东天骏信息技术有限公司 一种数据查询方法、装置、设备及存储介质
CN114691037A (zh) * 2022-03-18 2022-07-01 阿里巴巴(中国)有限公司 卸载卡命名空间管理、输入输出请求处理系统和方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN102103526A (zh) * 2011-02-14 2011-06-22 博视联(苏州)信息科技有限公司 服务端和客户端间通过服务管理进行进程间通信的方法及系统
CN102591726A (zh) * 2011-12-31 2012-07-18 青岛海信宽带多媒体技术有限公司 一种多进程通信方法
US9183065B1 (en) * 2012-11-01 2015-11-10 Amazon Technologies, Inc. Providing access to an application programming interface through a named pipe
CN106161537A (zh) * 2015-04-10 2016-11-23 阿里巴巴集团控股有限公司 远程过程调用的处理方法、装置、系统及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901596B1 (en) * 1998-05-07 2005-05-31 Hewlett-Packard Development Company, L.P. Method of communicating asynchronous events to remote procedure call clients

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN102103526A (zh) * 2011-02-14 2011-06-22 博视联(苏州)信息科技有限公司 服务端和客户端间通过服务管理进行进程间通信的方法及系统
CN102591726A (zh) * 2011-12-31 2012-07-18 青岛海信宽带多媒体技术有限公司 一种多进程通信方法
US9183065B1 (en) * 2012-11-01 2015-11-10 Amazon Technologies, Inc. Providing access to an application programming interface through a named pipe
CN106161537A (zh) * 2015-04-10 2016-11-23 阿里巴巴集团控股有限公司 远程过程调用的处理方法、装置、系统及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992433A (zh) * 2019-04-11 2019-07-09 苏州浪潮智能科技有限公司 一种分布式tgt通信优化方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN107526645A (zh) 2017-12-29
CN107526645B (zh) 2019-01-29

Similar Documents

Publication Publication Date Title
WO2019047441A1 (zh) 一种通信优化方法及系统
CN108536761B (zh) 报表数据查询方法及服务器
JP6223569B2 (ja) ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置
US9665404B2 (en) Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning
EP2932370B1 (en) System and method for performing a transaction in a massively parallel processing database
Viennot et al. Synapse: a microservices architecture for heterogeneous-database web applications
CN100594498C (zh) 海量数据实时处理架构及用于该架构的实时随需处理平台
US8635250B2 (en) Methods and systems for deleting large amounts of data from a multitenant database
CN105354328B (zh) 一种解决NoSQL数据库并发访问冲突的系统及方法
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
CN105187327A (zh) 一种分布式消息队列中间件
WO2018035799A1 (zh) 数据查询方法、应用和数据库服务器、中间件及系统
WO2011146540A2 (en) Sharing and synchronization of objects
CN109067841A (zh) 基于ZooKeeper的服务限流方法、系统、服务器及存储介质
CN106412009A (zh) 接口调用方法及装置
CN105138679A (zh) 一种基于分布式缓存的数据处理系统及处理方法
CN103838781A (zh) 数据库访问方法及系统
US20090328043A1 (en) Infrastructure of data summarization including light programs and helper steps
CN105138646A (zh) 一种基于Hibernate的数据库操作方法
CN103488794A (zh) 一种任意属性的数据库操作的Web实现方法
WO2016008317A1 (zh) 数据处理方法和中心节点
Shrivastava et al. Real time transaction management in replicated DRTDBS
CN103970592A (zh) 交易中间件的单线程多任务处理方法及服务器
CN117950850A (zh) 一种数据传输方法、装置、电子设备及计算机可读介质
CN110162391A (zh) 一种异步框架及其实现方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17924630

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17924630

Country of ref document: EP

Kind code of ref document: A1