动态线程池构建方法、远程过程调用方法及装置制造方法及图纸

技术编号:36863807 阅读:13 留言:0更新日期:2023-03-15 18:48
本发明专利技术公开了一种动态线程池构建方法、远程过程调用方法及装置。服务端设备依据配置的启动参数,启动服务端程序,该启动参数指示在不同时间下线程池所包含的线程数量。服务端程序在启动后,持续监听客户端设备的RPC请求,在监听到RPC请求时,分配socket,并动态绑定线程池中的线程来处理该RPC请求的任务,之后将执行结果反馈给客户端设备。本发明专利技术将分配的socket与线程池中的线程进行绑定时,执行该线程的resume()函数,以快速调度线程。本发明专利技术能够避免频发地创建和释放线程,同时提高服务端程序的响应速度,并且能够保证线程池的大小持续处于较优的状态,高效利用了服务端程序的内存。存。存。

【技术实现步骤摘要】
动态线程池构建方法、远程过程调用方法及装置


[0001]本专利技术涉及计算机通信领域,尤其是一种动态线程池构建方法,以及一种基于动态线程池的RPC(Remote Procedure Call,远程过程调用)方法及装置。

技术介绍

[0002]通过RPC(Remote Procedure Call,远程过程调用),我们可以充分利用非共享内存的多处理器环境(例如通过局域网连接的多台应用服务器),这样可以简便地将你的应用分布在多台应用服务器上,应用程序就像运行在一个多处理器的计算机上一样。我们可以方便的实现过程代码共享,提高系统资源的利用率,也可以将以大量数值处理的操作放在处理能力较强的系统上运行,从而减轻前端机的负担。RPC作为普遍的C/S开发方法,开发效率高效、可靠。RPC方法的基本原则是:以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之间的通讯协议,集中精力实现应用过程。
[0003]RPC需要兼具响应快、高并发两大性能。利用c/c++标准库函数写的RPC服务端程序既可以跨平台使用又可以提高程序的执行效率,当有客户端通过RPC发送请求时,RPC服务端程序就会监听到请求,响应请求然后分配socket的内存单元并初始化,创建一个线程以处理RPC请求的任务,在事件处理完成后该线程的生命周期便结束了。在传统的服务程序中,在我们要处理相关操作时创建一个线程,为这个线程的类分配内存空间并为该线程的运行分配栈空间,然后执行线程的run()函数为应用程序处理相关的事情,待事情处理完毕后,应用程序会关闭此线程并释放线程的所有资源,等到下次需要新的线程来响应应用程序的需求时再次创建线程分配资源。
[0004]然而,频繁的为RPC服务创建线程分配资源和关闭线程释放资源会大大增加CPU的开销,影响RPC的效率,严重的会使客户端RPC请求响应的实时性得不到保障,频繁的动态申请和释放内存也会增加内存碎片,并且可能还会有内存泄漏的风险。而针对该缺陷,人们想到了线程池的概念,即预先搭建包含某一数量线程的线程池,这些线程常驻内存,在需要处理RPC请求时,绑定某个线程处理任务事件,处理完成后,解除绑定,但不释放该线程的资源,该线程可以继续处理下一次RPC请求,以快速响应RPC请求,此类解决方案例如有文献CN106648940A所公开的一种远程过程调用方法及装置。
[0005]但是,上述构建线程池的方案的线程池容量是固定的,即无论活跃的客户端设备有多少,线程的数量是固定不变的,这在仅有少量活跃客户端设备(即RPC请求少)的情况下,会造成服务器设备内存资源的浪费。

技术实现思路

[0006]本专利技术的专利技术目的在于:针对上述存在的问题,提供一种动态线程池构建方法,以动态调整线程池中线程的数量,以在解决线程频繁创建和释放的问题的情况时,尽可能高效利用服务器设备的内存。
[0007]本专利技术采用的技术方案如下:
一种动态线程池构建方法,应用于服务器设备;所述方法包括:接收配置的启动参数,依据所述启动参数启动服务端程序,启动服务端程序包括依据所述启动参数搭建线程池的过程;所述启动参数指示在不同时间下线程池所包含的线程数量。所谓的启动服务端程序,即从开启服务端程序到关闭前这期间的过程。
[0008]为解决上述全部或部分问题,本专利技术还提供了一种基于动态线程池的远程过程调用方法,该方法应用于服务器设备,所述服务器设备与客户端设备通信连接,所述方法包括:接收配置的启动参数,所述启动参数指示在不同时间下线程池所包含的线程数量;依据所述启动参数启动服务端程序,启动服务端程序包括依据所述启动参数的指示在不同时间搭建包含对应数量线程的线程池的过程;还包括:监听客户端设备的远程过程调用请求;响应监听到的远程过程调用请求,从线程池中选择线程以执行所述远程过程调用请求的任务;将所述线程的执行结果反馈给所述客户端设备。
[0009]为解决上述全部或部分问题,本专利技术还提供了一种基于动态线程池的远程过程调用装置,应用于服务器设备,所述服务器设备与客户端设备通信连接,所述装置包括:配置单元,用于接收配置的启动参数,所述启动参数指示在不同时间下线程池所包含的线程数量;启动单元,用于依据所述启动参数启动服务端程序,包括依据所述启动参数的指示在不同时间搭建包含对应数量线程的线程池;请求监听单元,用于监听客户端设备的远程过程调用请求;任务执行单元,用于从线程池中选择线程执行所述请求监听单元所监听到的远程过程调用请求的任务,并将所述线程的执行结果反馈给所述客户端设备。
[0010]综上所述,由于采用了上述技术方案,本专利技术的有益效果是:1、本专利技术能够避免频繁地创建和释放线程,能够避免因此造成的服务器设备资源浪费,同时能够提高服务端程序的响应速度。
[0011]2、本专利技术在保证服务端程序构建有线程池的情况下,依据时间动态调整线程池中的线程数量,以与活跃的客户端设备数量动态适配,既能保证对RPC请求的快速响应,又能保证对线程的高效利用,保证对服务端程序内存的高效利用。
附图说明
[0012]本专利技术将通过例子并参照附图的方式说明,其中:图1是服务器设备和客户端设备之间RPC通信的网络构造示意图。
[0013]图2是基于动态线程池的RPC方法流程的一个优选实施例。
具体实施方式
[0014]本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0015]本说明书(包括任何附加权利要求、摘要)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0016]实施例一本实施例公开了一种动态线程池构建方法,该方法应用与服务器设备,服务器设备即提供远程应用服务的设备,其响应客户端设备的RPC请求进行任务事件的处理,以及将处理结果反馈给客户端设备。
[0017]在本方法中,通过配置启动参数来对服务端程序进行启动指示。该启动参数包含指示服务端程序在不同时间下线程池所包含的线程数量的信息,服务端程序接收该启动参数,依据该启动参数的指示启动服务端程序,服务端程序启动过程涉及开启服务端程序到关闭服务端程序的过程,包含依据启动参数的指示搭建线程池,即依据启动参数中信息的指示,在不同的时间搭建包含相应数量线程的线程池。例如,启动参数指示在时间t1时(或t1

t2内),线程池中线程数量为n1,在时间t2时(或t2

t3内),线程池中线程数量为n2
……
在时间tk时(或tk

t1内),线程中线程数量为nk。对应的,服务端程序则在时间t1时,搭建包含n1个线程的线程池,在时间t2时,重新搭建包含n2个线程的线程池
……
在时间tk时,重新搭建包含nk个线程的线程池。由于时间是循环的,则在服务端程序未关闭前,在时间又到达t1时,服务端程序重新搭建包含n1个线程的线程池本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动态线程池构建方法,应用于服务器设备;所述方法包括:接收配置的启动参数,依据所述启动参数启动服务端程序,启动服务端程序包括依据所述启动参数搭建线程池的过程;其特征在于,所述启动参数指示在不同时间下线程池所包含的线程数量。2.如权利要求1所述的动态线程池构建方法,其特征在于,所述启动参数指示在所述不同时间下的各特定时间启动定时器中断来配置对应特定时间下线程池所包含的线程数量。3.一种基于动态线程池的远程过程调用方法,应用于服务器设备,所述服务器设备与客户端设备通信连接,其特征在于,所述方法包括:接收配置的启动参数,所述启动参数指示在不同时间下线程池所包含的线程数量;依据所述启动参数启动服务端程序,启动服务端程序包括依据所述启动参数的指示在不同时间搭建包含对应数量线程的线程池的过程;还包括:监听客户端设备的远程过程调用请求;响应监听到的远程过程调用请求,从线程池中选择线程以执行所述远程过程调用请求的任务;将所述线程的执行结果反馈给所述客户端设备。4.如权利要求3所述的基于动态线程池的远程过程调用方法,其特征在于,所述依据所述启动参数的指示在不同时间搭建包含对应数量线程的线程池,包括:依据所述启动参数的指示,搭建包含对应于当前时间的数量的线程的线程池,循环执行以下流程,直至服务端程序退出:依据所述启动参数的指示,设定下一时刻的定时器中断;在到达所述定时器中断指示的下一时刻时,执行定时器中断以依据所述启动参数指示的线程数量重新搭建线程池。5.如权利要求3所述的基于动态线程池的远程过程调用方法,其特征在于,所述依据所述启动参数的指示在不同时间搭建包含对应数量线程的线程池,包括:依据时间顺序循环执行以下流程,直至服务端程序退出:依据所述启动参数的指示,搭建包含对应于当前时间的数量的线程的线程池;依据所述启动参数的指示,设定下一时刻的定时器中断,以指示在到达下一时刻时重新搭建包含所述启动参...

【专利技术属性】
技术研发人员:张立峰
申请(专利权)人:中科源码成都服务机器人研究院有限公司
类型:发明
国别省市:

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

1