CN108776623B - 一种优化方法、计算机设备和存储介质 - Google Patents
一种优化方法、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN108776623B CN108776623B CN201810588784.2A CN201810588784A CN108776623B CN 108776623 B CN108776623 B CN 108776623B CN 201810588784 A CN201810588784 A CN 201810588784A CN 108776623 B CN108776623 B CN 108776623B
- Authority
- CN
- China
- Prior art keywords
- rpc
- variable
- main thread
- transmission
- created
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 132
- 238000005457 optimization Methods 0.000 title claims abstract description 18
- 238000004891 communication Methods 0.000 claims abstract description 144
- 230000005540 biological transmission Effects 0.000 claims abstract description 133
- 238000012545 processing Methods 0.000 claims abstract description 50
- 230000006870 function Effects 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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)
Abstract
本发明提供了一种优化方法,包括:通过创建RPC通信实例;设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。可以减少为RPC通信实例创建的线程数量,从而提高程序的稳定性。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种优化方法、计算机设备和存储介质。
背景技术
RPC(Remote Procedure Call,远程方法调用)是两个进程间进行通信的一种方法,在一些应用中,每创建一个RPC通信实例,就会在系统中创建多个线程来进行RPC任务队列的执行和数据的传输,。
由于每个RPC通信实例都需要创建多个线程,而线程又是操作系统中一个重要的资源,随着进程中创建的RPC通信实例越来越多,线程数量也随之增加,当线程的数量超过系统资源的承载能力时,将导致线程的创建失败,从而引起整个进程的崩溃。
发明内容
本申请实施例通过提供一种优化方法、计算机设备和存储介质,可以减少为RPC通信实例创建的线程数量,从而提高程序的稳定性,解决了现有技术中,由于线程的数量太多而导致整个进程崩溃的问题。
第一方面,本申请通过本申请的一实施例,提供如下技术方案:
一种优化方法,包括:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
可选的,所述设置第一变量包括:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
可选的,所述设置第二变量包括:
在IPC模块的BaseInterProcessCommunicate类中增加一个bool类型的所述第二变量,所述第二变量的初始值为false,表示需要创建所述传输主线程;
若不需要创建所述传输主线程,通过调用所述IPC模块的setOption方法将所述第二变量的值改为true,表示不需要创建所述传输主线程。
可选的,所述通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输包括:
通过调用所述RpcPollService函数来调用所述RPC模块的RpcBase类中的poll方法,并在所述poll方法中,调用ProcAddTask方法处理所述RPC通信实例的RPC任务队列的执行,调用ioRun方法处理所述RPC通信实例的数据的传输。
第二方面,本申请通过本申请的一实施例,提供如下技术方案:
一种优化装置,所述装置包括:
创建单元,用于创建RPC通信实例;
第一设置单元,用于设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
第二设置单元,用于设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
确定单元,用于根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
处理单元,用于如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
可选的,所述第一设置单元具体用于:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
可选的,所述第二设置单元具体用于:
在IPC模块的BaseInterProcessCommunicate类中增加一个bool类型的所述第二变量,所述第二变量的初始值为false,表示需要创建所述传输主线程;
若不需要创建所述传输主线程,通过调用所述IPC模块的setOption方法将所述第二变量的值改为true,表示不需要创建所述传输主线程。
可选的,所述处理单元具体用于:
通过调用所述RpcPollService函数来调用所述RPC模块的RpcBase类中的poll方法,并在所述poll方法中,调用ProcAddTask方法处理RPC通信实例的RPC任务队列的执行,调用ioRun方法处理RPC通信实例的数据的传输。
第三方面,本申请通过本申请的一实施例,提供如下技术方案:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
第四方面,本申请通过本申请的一实施例,提供如下技术方案:
一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
可见,本申请提供的实施例,通过创建RPC通信实例;设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。可以减少为RPC通信实例创建的线程数量,从而提高程序的稳定性,解决了现有技术中,由于线程的数量太多而导致整个进程崩溃的问题。
附图说明
图1为本申请实施例中提供的优化方法的流程图;
图2为本申请实施例中提供的优化装置的结构示意图;
图3为本申请实施例中提供的计算机可读存储介质的结构示意图;
图4为本申请实施例中提供的计算机设备的结构示意图。
具体实施方式
本申请实施例提供了一种优化方法、计算机设备和存储介质,可以减少为RPC通信实例创建的线程数量,从而提高程序的稳定性,解决了现有技术中,由于线程的数量太多而导致整个进程崩溃的问题。
远程过程调用RPC是两个进程间进行通信的一种方法,就是一个进程调用另外一个进程所提供的方法,但是在调用者的角度仍然跟调用本进程的函数是一致的。在RPC的应用中,每创建一个RPC通信实例,就会在系统中创建多个线程,其中包括RPC模块中的RPC主线程,负责处理RPC任务队列的执行;还有RPC所依赖的IPC模块中的传输主线程,负责处理数据的传输。本实施例可以通过不创建这两个进程来控制线程的数量。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
一种优化方法,包括:创建RPC通信实例;设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。其中,RpcPollService函数可以用于轮询RPC通信实例中的任务。
为了更好的理解上述技术方案,以下结合附图以及具体实施例,对上述技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。可以理解的是,本申请实施例使用的函数名称或变量名称等,并不用于限定本申请,在一些其他可能的实现方式中,也可以使用其他命名方式。
实施例一:
请参阅图1,本实施例提供的一种多进程解码的播放方法包括以下步骤:
S101、创建RPC通信实例。
具体的,创建RPC通信实例包括:调用RpcCreateInstance方法,创建RPC实例。RpcCreateInstance函数的原型如下:
HRPC RpcCreateInstance(RpcTransferMethod method,bool isServer,RpcCallbackFunction,void*userData)
可见该函数接收4个参数,其中第一个参数method表示采用什么样的数据通信方法,可选的值包括RPM_NAMED_PIPE,表示采用命名管道的方式进行数据传输;以及包括RPM_TCP_SOCKET,表示采用TCP进行数据传输;还包括RPM_UDP_SOCKET,表示采用UDP进行数据传输。
其中的第二个参数isServer表示是否创建RPC服务器实例,当该参数为true时,会创建一个RPC的服务器实例;为false时,会创建一个RPC的客户端实例。在RPC模块中,有三个重要的类,一个是RpcBase,一个是RpcServer,还有RpcClient。其中RpcBase是基础类,RpcServer代表一个RPC服务器类,它继承于RpcBase;RpcClient代表一个RPC客户端,也继承于RpcBase。当isServer为true时,该函数内部会创建一个RpcServer的实例,并将该实例返回;而当该参数为false时,该函数内部会创建一个RpcClient的实例,同样将该实例返回,从而完成RPC通信实例的创建。
S102、设置第一变量。
其中,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程RpcMainThread,所述RPC主线程RpcMainThread用于处理RPC任务队列的执行。
具体的,设置第一变量的步骤包括:
在RPC模块的RpcBase类中增加一个bool类型的第一变量m_isNoThread,所述第一变量的初始值为false,表示需要创建所述RPC主线程;在RPC模块中,RpcSetProperty方法可以用于设置RPC通信实例的相关属性,若不需要创建所述RPC主线程,通过调用RpcSetProperty方法将RPC_NO_THREAD枚举值传入到该方法中,从而设置RpcBase中的第一变量m_isNoThread的值为true,其中,第一变量m_isNoThread的值为true表示不需要创建所述RPC主线程。
S103、设置第二变量。
其中,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程IoTransferMainThread,所述传输主线程IoTransferMainThread用于处理数据的传输。
具体的,设置第二变量的步骤包括:
在IPC模块的BaseInterProcessCommunicate类中增加一个bool类型的第二变量m_isNoThread,所述第二变量的初始值为false,表示需要创建所述传输主线程。由于IPC模块是RPC模块的内部引用模块,所以第二变量m_isNoThead是InterProcessCommunicate模块中的一个内部变量,RPC模块作为外部是不知道第二变量的存在的,而在IInterProcessCommunicate接口中,包括一个setOption方法,该方法可以设置IInterProcessCommunicate接口的相关属性,从而能够从外部设置IPC模块的内部变量,所以若不需要创建所述传输主线程,可以通过调用所述IPC模块的setOption方法,并将该方法的第一个参数设置为IPO_NO_THREAD,那么该方法内部就会将第二变量m_isNoThread值设置为true,其中,第二变量m_isNoThread的值为true表示不需要创建所述传输主线程。
需要说明的是,为了便于理解,本实施例中的第一变量和第二变量都命名为m_isNoThread,在一些可能的设计中,第一变量和第二变量可以命名为不同的名称,或者命名为相同的其他名称,此处不做太多限定。
S104、根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的RPC主线程和传输主线程。
当RPC实例创建完后,还包括调用RpcStartService方法来启动RPC的步骤,其中当该RPC实例为一个服务器实例时,会启动服务;而当该实例为一个客户端实例时,会进行连接到服务器的操作。所述第一变量和所述第二变量的默认值为false,根据所述第一变量和所述第二变量的值为false,在调用BaseInterProcessCommunicate类的startThread方法来创建线程时,需要为RPC通信实例创建RPC主线程和传输主线程。若不需要创建RPC主线程和传输主线程,本实施例可以在调用RpcStartService方法启动RPC时,调用所述RPC模块的RpcSetProperty方法将RPC_NO_THREAD枚举值传入到该方法中,从而设置RpcBase中的第一变量m_isNoThread的值为true,同时,调用所述IPC模块的setOption方法,并将该方法的第一个参数设置为IPO_NO_THREAD,从而将第二变量m_isNoThread值设置为true。由于第一变量和第二变量的值已设置为true,当在调用BaseInterProcessCommunicate类的startThread方法时,根据所述第一变量的值为ture,确定不需要创建所述RPC通信实例的RPC主线程,根据所述第二变量的值为ture,确定不需要创建所述RPC通信实例的传输主线程。
S105、如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
由于所述RPC主线程用于处理RPC任务队列的执行,所述传输主线程用于处理数据的传输,在未创建RPC主线程和传输主线程的情况下,必须解决RPC任务队列的执行和数据的传输问题。本实施例中,通过调用RpcPollService函数来调用所述RPC模块的RpcBase类中的poll方法,并在所述poll方法中,调用ProcAddTask方法处理所述RPC通信实例的RPC任务队列的执行,调用ioRun方法处理所述RPC通信实例的数据的传输。
具体的,在RpcBase中,包括一个poll方法,在该方法中,首先判断第一变量m_isNoThread是否为true,如果为true,再调用m_queue任务队列的ProcAddTask方法执行任务队列中的所有任务,从而接管RPC主线程RpcMainThread的工作,与此同时,由于IPR模块是内部模块,通过外部RPC模块调用IInterProcessCommunicate接口的m_communicate成员的poll方法,在该方法中,首先判断第二变量m_isNoThread是否为true,如果为true,调用ioRun方法处理所述RPC通信实例的数据的传输,从而接管传输主线程IoTransferMainThread的工作。
需要说明的是,由于RpcBase的poll方法是一个内部函数,所以在RPC模块对外提供的RpcPollService方法中,其内部直接调用RpcBase的poll方法,从而实现RPC任务队列的执行以及数据的传输。
为了便于理解,下面将提供一段代码进行举例说明:
HRPC rpc=CreateCreateInstance(RPM_NAMED_PIPE,true)
RpcSetProperty(rpc,RPC_NO_THREAD)
RpcStartService(rpc);
While(1)
RpcPollService(rpc)
上述代码中,通过CreateCreateInstance方法创建一个命名管道服务端的通信实例,然后通过RpcSetProperty方法设置了RPC_NO_THREAD属性,从而将第一变量和第二变量的值设置为true,这样,当调用RpcStartService方法启动RPC时,就不会创建RPC主线程和传输主线程,并且在后面的while循环中,通过调用RpcPollService函数,处理任务队列的执行以及数据的传输。
可见,本实施例通过创建RPC通信实例;设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。可以减少为RPC通信实例创建的线程数量,从而提高程序的稳定性,解决了现有技术中,由于线程的数量太多而导致整个进程崩溃的问题。
基于同一发明构思,本申请提供了一种优化装置,详见图2,下面将结合图2对实施例二进行介绍。
实施例二:
请参阅图2,本实施例提供的优化装置包括:
创建单元201,用于创建RPC通信实例;
第一设置单元202,用于设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
第二设置单元203,用于设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
确定单元204,用于根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
处理单元205,用于如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
作为一种可选的实施方式,所述第一设置单元202具体用于:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
作为一种可选的实施方式,所述第二设置单元203具体用于:
在IPC模块的BaseInterProcessCommunicate类中增加一个bool类型的所述第二变量,所述第二变量的初始值为false,表示需要创建所述传输主线程;
若不需要创建所述传输主线程,通过调用所述IPC模块的setOption方法将所述第二变量的值改为true,表示不需要创建所述传输主线程。
作为一种可选的实施方式,所述处理单元205具体用于:
通过调用所述RpcPollService函数来调用所述RPC模块的RpcBase类中的poll方法,并在所述poll方法中,调用ProcAddTask方法处理RPC通信实例的RPC任务队列的执行,调用ioRun方法处理RPC通信实例的数据的传输。
可见,本实施例通过创建单元201创建RPC通信实例;第一设置单元202设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;第二设置单元203设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;确定单元204根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则处理单元205通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。可以减少为RPC通信实例创建的线程数量,从而提高程序的稳定性,解决了现有技术中,由于线程的数量太多而导致整个进程崩溃的问题。
本申请实施例二提供的优化装置及本申请实施例一提供的优化方法属于同一构思,其具体实现过程详见说明书全文,此处不再赘述。
基于同一发明构思,本申请提供了一种计算机可读存储介质,详见图3,下面将结合图3对实施例三进行介绍。
实施例三:
本实施例提供了一种计算机可读存储介质300,所述计算机可读存储介质300存储有计算机程序311,所述计算机程序311被处理器执行时实现以下步骤:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
在具体实施过程中,该计算机程序311被处理器执行时,可以实现实施例一中任一实施方式。
基于同一发明构思,本申请还提供了一种计算机设备,详见图4,下面将结合图4对实施例四进行介绍。
实施例四:
本申请提供了一种计算机设备400,包括处理器420、存储器410以及存储在存储器410上并可在处理器420上运行的计算机程序411,所述处理器420执行所述计算机程序411时实现以下步骤:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输。
由于本实施例所介绍的计算机设备400为实施本申请实施例一中优化方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的计算机设备400的具体实施方式以及其各种变化形式,所以在此对于该计算机设备400如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种优化方法,其特征在于,所述方法包括:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输;
所述设置第一变量包括:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
2.如权利要求1所述的方法,其特征在于,所述设置第二变量包括:
在IPC模块的BaseInterProcessCommunicate类中增加一个bool类型的所述第二变量,所述第二变量的初始值为false,表示需要创建所述传输主线程;
若不需要创建所述传输主线程,通过调用所述IPC模块的setOption方法将所述第二变量的值改为true,表示不需要创建所述传输主线程。
3.如权利要求1-2任一项所述的方法,其特征在于,所述通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输包括:
通过调用所述RpcPollService函数来调用所述RPC模块的RpcBase类中的poll方法,并在所述poll方法中,调用ProcAddTask方法处理所述RPC通信实例的RPC任务队列的执行,调用ioRun方法处理所述RPC通信实例的数据的传输。
4.一种优化装置,其特征在于,所述装置包括:
创建单元,用于创建RPC通信实例;
第一设置单元,用于设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
第二设置单元,用于设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
确定单元,用于根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
处理单元,用于如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输;
所述第一设置单元具体用于:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
5.如权利要求4所述的装置,其特征在于,所述第二设置单元具体用于:
在IPC模块的BaseInterProcessCommunicate类中增加一个bool类型的所述第二变量,所述第二变量的初始值为false,表示需要创建所述传输主线程;
若不需要创建所述传输主线程,通过调用所述IPC模块的setOption方法将所述第二变量的值改为true,表示不需要创建所述传输主线程。
6.如权利要求4-5任一项所述的装置,其特征在于,所述处理单元具体用于:
通过调用所述RpcPollService函数来调用所述RPC模块的RpcBase类中的poll方法,并在所述poll方法中,调用ProcAddTask方法处理RPC通信实例的RPC任务队列的执行,调用ioRun方法处理RPC通信实例的数据的传输。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输;
所述设置第一变量包括:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
8.一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
创建RPC通信实例;
设置第一变量,所述第一变量用于指示是否创建所述RPC通信实例的RPC主线程,所述RPC主线程用于处理RPC任务队列的执行;
设置第二变量,所述第二变量用于指示是否创建所述RPC通信实例的传输主线程,所述传输主线程用于处理数据的传输;
根据所述第一变量和所述第二变量,确定是否创建所述RPC通信实例的所述RPC主线程和所述传输主线程;
如果确定不创建所述RPC通信实例的所述RPC主线程和所述传输主线程,则通过调用RpcPollService函数处理所述RPC通信实例的RPC任务队列的执行和数据的传输;
所述设置第一变量包括:
在RPC模块的RpcBase类中增加一个bool类型的所述第一变量,所述第一变量的初始值为false,表示需要创建所述RPC主线程;
若不需要创建所述RPC主线程,通过调用所述RPC模块的RpcSetProperty方法将所述第一变量的值改为true,表示不需要创建所述RPC主线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810588784.2A CN108776623B (zh) | 2018-06-08 | 2018-06-08 | 一种优化方法、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810588784.2A CN108776623B (zh) | 2018-06-08 | 2018-06-08 | 一种优化方法、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108776623A CN108776623A (zh) | 2018-11-09 |
CN108776623B true CN108776623B (zh) | 2020-09-08 |
Family
ID=64024746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810588784.2A Active CN108776623B (zh) | 2018-06-08 | 2018-06-08 | 一种优化方法、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108776623B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104917817A (zh) * | 2015-04-23 | 2015-09-16 | 四川师范大学 | 客户端以及数据通信方法 |
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN106648940A (zh) * | 2017-03-13 | 2017-05-10 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7146427B2 (en) * | 2002-04-23 | 2006-12-05 | Lsi Logic Corporation | Polling-based mechanism for improved RPC timeout handling |
US9323921B2 (en) * | 2010-07-13 | 2016-04-26 | Microsoft Technology Licensing, Llc | Ultra-low cost sandboxing for application appliances |
-
2018
- 2018-06-08 CN CN201810588784.2A patent/CN108776623B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN104917817A (zh) * | 2015-04-23 | 2015-09-16 | 四川师范大学 | 客户端以及数据通信方法 |
CN106648940A (zh) * | 2017-03-13 | 2017-05-10 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
Non-Patent Citations (2)
Title |
---|
基于MongoDB的网站日志分析系统的设计与实现;孙思源;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140915;正文第4.2节 * |
线程池技术在银行核心系统中的应用;葛辉;《应用技术与研究》;20110228;第63-65页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108776623A (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10540351B2 (en) | Query dispatch and execution architecture | |
CN109445955B (zh) | 一种计数方法及计数系统 | |
CN108733496B (zh) | 事件处理方法和装置 | |
US11381638B1 (en) | System and method for parallel execution of activites in an integration flow | |
CN108958951B (zh) | 一种优化方法、计算机设备和存储介质 | |
CN110413328B (zh) | 一种网卡端口的pxe功能使能方法、装置及相关设备 | |
CN106341469B (zh) | 树节点数据的加载方法和装置 | |
CN114691321A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN103975301A (zh) | 通过本地服务器的对于本地客户机应用的事件服务 | |
CN108776623B (zh) | 一种优化方法、计算机设备和存储介质 | |
EP3188071B1 (en) | Application accessing control method and device | |
CN107025126B (zh) | 一种资源调度方法、nfvo和系统 | |
CN109462663B (zh) | 一种限制系统资源占用的方法、语音交互系统及存储介质 | |
US9348667B2 (en) | Apparatus for managing application program and method therefor | |
CN110704203B (zh) | 一种可中断的远程过程调用方法及装置 | |
CN110851166A (zh) | 用户无感知的应用程序更新方法、装置及计算机设备 | |
CN106897057B (zh) | 插件调用通知栏的方法及装置 | |
CN112015551A (zh) | 协程池的管理方法及装置 | |
CN106934555B (zh) | 工作流的组织方法及装置、计算机设备及存储介质 | |
US9021157B2 (en) | Reliable socket transfer based on initializing and re-initializing a communication link and retaining a connected state | |
US9032425B1 (en) | System and method to boost application performance by using a proxy for executing synchronous application programming interface calls | |
US20150356310A1 (en) | Application software service system for controlling ui access according to user level and method thereof | |
US20060195434A1 (en) | Multiple Invocation Style Integration Framework | |
CN109240834B (zh) | 一种优化方法、计算机设备和存储介质 | |
CN110633181B (zh) | 可视化显示方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240108 Address after: 710061 Wanke Oriental Legend 1-3-1602, Huangqutou Second Road, Qujiang New District, Xi'an City, Shaanxi Province Patentee after: Xi'an Taobang Network Technology Co.,Ltd. Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |