多线程业务处理方法、装置、服务器及存储介质

文档序号:684894 发布日期:2021-04-30 浏览:4次 >En<

阅读说明:本技术 多线程业务处理方法、装置、服务器及存储介质 (Multithreading business processing method and device, server and storage medium ) 是由 费战波 师文佼 王坤明 魏帅 王海豹 于 2020-12-28 设计创作,主要内容包括:本申请提供一种多线程业务处理方法、装置、服务器及存储介质,涉及通信技术领域。该方法包括:在满足当前待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,业务类型用于表征待执行业务的业务功能;调用目标执行线程执行待执行业务。本方案中,业务平台可同时对多个智能终端进行数据处理,对于每个智能终端的各业务的执行,通过合理调配各线程之间的关系,使得多个线程之间可以配合执行不同业务,使得服务器性能达到最优,通过多个线程并发执行各智能终端的各个业务,可以有效提高业务平台对智能终端业务执行的效率。(The application provides a multithreading business processing method, a multithreading business processing device, a server and a storage medium, and relates to the technical field of communication. The method comprises the following steps: when the execution condition of the current service to be executed is met, determining a target execution thread for executing the service to be executed according to the service type of the current service to be executed, the number of threads currently running and the maximum number of threads allowed to run by a service platform, wherein the service type is used for representing the service function of the service to be executed; and calling the target execution thread to execute the service to be executed. According to the scheme, the service platform can simultaneously perform data processing on the intelligent terminals, for the execution of each service of each intelligent terminal, the relation among the threads is reasonably allocated, so that different services can be executed in a matched mode among the threads, the performance of the server is optimal, each service of each intelligent terminal is executed through the threads, and the efficiency of the service platform for executing the services of the intelligent terminals can be effectively improved.)

多线程业务处理方法、装置、服务器及存储介质

技术领域

本申请涉及通信技术领域,具体而言,涉及一种多线程业务处理方法、装置、服务器及存储介质。

背景技术

随着城市建设的不断发展,智能水表、电表等智能表成为不可或缺的数据采集设备。随着智能表使用数量的增多,对抄表要求逐渐增高,更加高效的实现数据采集服务变得尤为重要。

现有技术中,是采用单一线程的数据抄表服务实现抄表业务,即抄表任务的执行、数据发送、接收等均是通过单一线程按照顺序执行的。

但是,上述方法会导致业务处理效率较低。

发明内容

本申请的目的在于,针对上述现有技术中的不足,提供一种多线程业务处理方法、装置、服务器及存储介质,以便于解决现有技术中存在的业务处理效率较低的问题。

为实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本申请实施例提供了一种多线程业务处理方法,应用于业务平台,所述业务平台用于处理多个智能终端的数据,所述方法包括:

在满足当前待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行所述待执行业务的目标执行线程,所述业务类型用于表征所述待执行业务的业务功能;

调用所述目标执行线程执行所述待执行业务。

可选地,所述根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行所述待执行业务的目标执行线程,包括:

判断所述当前正在运行的线程数是否达到所述所允许运行的最大线程数;

若是,则根据所述当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,确定所述目标执行线程。

可选地,所述根据所述当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,确定所述目标执行线程,包括:

根据所述当前待执行业务的业务类型,确定所述当前待执行业务的优先级;

若所述当前待执行业务的优先级高于或等于预设优先级,则根据所述正在运行的各线程对应的业务的业务类型,将所述正在运行的各线程中执行第一业务的线程确定为所述目标执行线程,其中,所述第一业务的优先级低于所述当前待执行业务的优先级。

可选地,所述方法还包括:

若所述当前待执行业务的优先级低于所述预设优先级,则将所述正在运行的各线程中首个运行结束的线程作为所述目标执行线程。

可选地,所述方法还包括:

若所述当前正在运行的线程数未达到所述所允许运行的最大线程数;

则从多个空闲线程中选择一个线程作为所述目标执行线程。

可选地,所述根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行所述待执行业务的目标执行线程之前,所述方法还包括:

根据所述业务平台的服务器配置参数,确定所述业务平台所允许运行的最大线程数。

可选地,所述根据所述业务平台的服务器配置参数,确定所述业务平台所允许运行的最大线程数,包括:

根据所述服务器的中央处理器核数和内存大小,确定所述业务平台所允许运行的最大线程数。

第二方面,本申请实施例还提供了一种多线程业务处理装置,应用于业务平台,所述业务平台用于处理多个智能终端的数据,所述装置包括:确定模块、执行模块;

所述确定模块,用于在满足当前待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行所述待执行业务的目标执行线程,所述业务类型用于表征所述待执行业务的业务功能;

所述执行模块,用于调用所述目标执行线程执行所述待执行业务。

可选地,所述确定模块,具体用于判断所述当前正在运行的线程数是否达到所述所允许运行的最大线程数;若是,则根据所述当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,确定所述目标执行线程。

可选地,所述确定模块,具体用于根据所述当前待执行业务的业务类型,确定所述当前待执行业务的优先级;若所述当前待执行业务的优先级高于或等于预设优先级,则根据所述正在运行的各线程对应的业务的业务类型,将所述正在运行的各线程中执行第一业务的线程确定为所述目标执行线程,其中,所述第一业务的优先级低于所述当前待执行业务的优先级。

可选地,所述确定模块,还用于若所述当前待执行业务的优先级低于所述预设优先级,则将所述正在运行的各线程中首个运行结束的线程作为所述目标执行线程。

可选地,所述确定模块,具体用于若所述当前正在运行的线程数未达到所述所允许运行的最大线程数;则从多个空闲线程中选择一个线程作为所述目标执行线程。

可选地,所述确定模块,还用于根据所述业务平台的服务器配置参数,确定所述业务平台所允许运行的最大线程数。

可选地,所述确定模块,具体用于根据所述服务器的中央处理器核数和内存大小,确定所述业务平台所允许运行的最大线程数。

第三方面,本申请实施例提供了一种服务器,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当服务器运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行时执行如第一方面中提供的多线程业务处理方法的步骤。

第四方面,本申请实施例提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面提供的多线程业务处理方法的步骤。

本申请的有益效果是:

本申请提供一种多线程业务处理方法、装置、服务器及存储介质,该方法包括:在满足当前待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,业务类型用于表征待执行业务的业务功能;调用目标执行线程执行待执行业务。本方案中,业务平台可同时对多个智能终端进行数据处理,对于每个智能终端的各业务的执行,均可以是根据业务平台所允许运行的最大线程数,从多个线程中确定执行待执行业务的目标执行线程,从而调用目标执行线程执行待执行业务,通过合理调配各线程之间的关系,使得多个线程之间可以配合执行不同业务,使得服务器性能达到最优,相比于现有技术中,通过单一线程依次执行各智能终端的各业务,本方法通过多个线程并发执行各智能终端的各个业务,可以有效提高业务平台对智能终端业务执行的效率。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种多线程业务处理系统架构图;

图2为本申请实施例提供的一种多线程业务处理方法的流程示意图;

图3为本申请实施例提供的另一种多线程业务处理方法的流程示意图;

图4为本申请实施例提供的又一种多线程业务处理方法的流程示意图;

图5为本申请实施例提供的另一种多线程业务处理方法的流程示意图;

图6为本申请实施例提供的一种多线程业务处理方法的整体流程示意图;

图7为本申请实施例提供的一种多线程业务处理装置的示意图;

图8为本申请实施例提供的一种服务器的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“抄表业务”,给出以下实施方式。对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。虽然本申请主要围绕抄表业务进行描述,但是应该理解,这仅是一个示例性实施例。本申请可以应用于任何其他场景。例如,本申请可以应用于物联网场景下所能实现的智能终端数据处理等。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

图1为本申请实施例提供的一种多线程业务处理系统架构图,该业务处理系统可用于实现本申请所提供的多线程业务处理方法。如图1所示,该业务处理系统可包括:业务平台以及多个智能终端,业务平台可以为服务器或者是计算机等处理设备,多个智能终端可以为同一类型的智能终端,也可以为不同类型的智能终端,智能终端可以为水表、电表、天然气表、电视机、投影仪等各种实现网络交互的终端设备,例如:基于物联网、蜂窝移动网、局域网等网络所实现的交互。其中,多个智能终端可通过网络与业务平台连接,业务平台与各智能终端之间可通过指令传送,实现对智能终端数据的采集、存储等功能。可选地,业务平台中所执行的不同类型的业务可通过调用不同的线程并行执行,以实现业务的高效并发执行,提高业务执行的效率。

图2为本申请实施例提供的一种多线程业务处理方法的流程示意图;该方法的执行主体可以是上述图1所示的业务处理系统中的业务平台,该业务平台可以为服务器、计算机等处理设备。如图2所示,该方法可包括:

S201、在满足当前待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,业务类型用于表征待执行业务的业务功能。

本申请以下实施例中将方法应用于抄表业务为示例场景,对本方法步骤的实现进行说明,实际应用中,可以不限于抄表业务,其他网络交互场景下的智能终端数据处理均可适用。

可选地,本实施例中所说的待执行业务可以为一个大的业务下所包括的各个子业务,以大的业务为抄表业务为例,其子业务可包括:定时任务检测业务、定时任务执行业务、数据发送业务、数据超时业务、数据接收业务及数据存储业务等,待执行业务可以为上述多个子业务中的任一业务。

其中,在通过业务平台处理任一智能终端的业务数据时,每个智能终端均可对应多个子业务,业务平台在执行智能终端的任一子业务时,可先从多个线程中确定出子业务对应的目标执行线程,从而调用目标执行线程执行待执行的子业务。同一时刻,业务平台中多个正在运行的线程可并发执行智能终端对应的多个子业务中的几个子业务,从而实现业务处理的高并发性。

通常,待执行业务并非一直持续执行的,其可以是在其他业务的触发下开始执行。以抄表业务为例,当启动抄表任务后,定时任务检测业务开始执行,当检测达到定时时间后,则定时任务检测业务可触发定时任务执行业务开始执行,定时任务执行业务判断需要发送数据指令时,则触发数据发送业务执行,以使得数据发送业务向目标水表发送数据采集指令等。当待执行业务满足执行条件时,则可调用线程执行该待执行业务,以保证待执行业务的正常执行,而当待执行业务执行完毕时,则线程可进入休眠状态,以等待执行其他业务,或者是等待再次触发,从而可以有效减轻服务器负荷,节省服务器资源。

其中,可根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程。其中,业务类型可以指业务所实现的功能,例如:定时业务、数据发送业务、数据接收业务等。业务平台所允许运行的最大线程数可根据业务平台的配置预先确定。

S202、调用目标执行线程执行待执行业务。

可选地,在满足待执行业务的执行条件时,则可根据确定的目标执行线程,调用目标执行线程执行该待执行业务。

而在待执行业务执行结束后,该目标执行线程处于空闲状态,当有其他待执行业务满足执行条件时,则继续通过上述的判断方法,确定其他待执行业务的目标执行线程,而目标执行线程可以是区别于上述处于空闲状态之外的其他线程,也可以是该处于空闲状态的线程,从而达到各线程之间的合理调用,使服务器性能达到最优。

综上,本实施例提供的多线程业务处理方法,包括:在满足待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,业务类型用于表征待执行业务的业务功能;调用目标执行线程执行待执行业务。本方案中,业务平台可同时对多个智能终端进行数据处理,对于每个智能终端的各业务的执行,均可以是根据业务平台所允许运行的最大线程数,从多个线程中确定执行待执行业务的目标执行线程,从而调用目标执行线程执行待执行业务,通过合理调配各线程之间的关系,使得多个线程之间可以配合执行不同业务,使得服务器性能达到最优,相比于现有技术中,通过单一线程依次执行各智能终端的各业务,本方法通过多个线程并发执行各智能终端的各个业务,可以有效提高业务平台对智能终端业务执行的效率。

图3为本申请实施例提供的另一种多线程业务处理方法的流程示意图;可选地,步骤S201中,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,可以包括:

S301、判断当前正在运行的线程数是否达到所允许运行的最大线程数。

在一种可实现的方式中,可判断当前正在运行的线程数是否达到所允许运行的最大线程数,也即判断当前正在运行的线程数是否达到最优。

假设所允许运行的最大线程数为3,当前有3个线程分别在执行不同的业务,则当前正在运行的线程数达到所允许运行的最大线程数。

S302、若是,则根据当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,确定目标执行线程。

在当前正在运行的线程数达到所允许运行的最大线程数的情况下,由于业务平台所允许并发运行的线程数已达到上限,无法通过开启新的线程运行待执行业务,则可以是根据当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,从正在运行的各线程中确定目标执行线程。

图4为本申请实施例提供的又一种多线程业务处理方法的流程示意图;可选地,步骤S302中,根据当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,确定目标执行线程,可以包括:

S401、根据当前待执行业务的业务类型,确定当前待执行业务的优先级。

通常,对于一个大的业务下的多个子业务,其多个子业务之间是存在优先级的,优先级可以表征各子业务的重要程度,例如,对于核心业务,类似于上述抄表业务中的数据发送、数据接收、数据存储等子业务,其相较于定时业务、检测超时等业务来说,较为重要,其优先级相对较高。

可选地,可根据待执行业务的业务类型,确定待执行业务的优先级。或者,也可以根据待执行业务的业务标识、以及预先配置的各业务之间的优先级,确定待执行业务的优先级。具体优先级的确定方式可以不做限制。

S402、若当前待执行业务的优先级高于或等于预设优先级,则根据正在运行的各线程对应的业务的业务类型,将正在运行的各线程中执行第一业务的线程确定为目标执行线程,其中,第一业务的优先级低于当前待执行业务的优先级。

可选地,可设定一预设优先级,将高于或等于预设优先级的待执行业务作为核心业务,将低于预设优先级的待执行业务作为非核心业务。

若当前待执行业务的优先级高于或等于预设优先级,也即确定待执行业务为核心业务时,此时,由于正在运行的线程数已达到所允许运行的最大线程数,则可从正在运行的多个线程中,将正在执行第一业务的线程确定为目标执行线程。

在一种情况下,第一业务可以是优先级低于预设优先级的业务,在另一种情况下,第一业务也可以是优先级低于当前待执行业务优先级的其他业务。

可选地,当正在运行的各线程所运行的业务中包含优先级低于预设优先级,也即包含非核心业务时,则第一业务可以为优先级低于预设优先级的业务。其中包含两种情况,第一种,正在运行的各线程所运行的业务中仅包含一个非核心业务,则可将运行该非核心业务的线程确定为目标执行线程,此时,将该非核心业务进入休眠状态,优先调用该目标执行线程执行优先级较高的该待执行的业务。第二种,正在运行的各线程所运行的业务中仅至少两个非核心业务时,则可根据两个非核心业务的优先级,将正在运行两个非核心业务中优先级较低的业务的线程确定为目标执行线程,或者也可以是从运行两个非核心业务的线程中任选一个线程作为目标执行线程。

可选地,当正在运行的各线程所运行的业务中不包含优先级低于预设优先级的业务,而仅仅包含的为优先级低于待执行业务的优先级的业务时,则可从运行优先级低于待执行业务的优先级的业务的线程中确定运行优先级最低的业务的线程为目标执行线程,或者也可以和上述类似,从运行优先级低于待执行业务的优先级的业务的线程中任意选择一个线程作为目标执行线程。

需要说明的是,本实施例仅是列举了几种较优的目标执行线程确定方式,以协调各线程之间的配合关系,使得服务器性能达到最优。当然,实际应用中,也可以有其他的目标执行线程确定方法,并不限于上述所列举的。

可选地,该方法还可包括:

S403、若当前待执行业务的优先级低于预设优先级,则将正在运行的各线程中首个运行结束的线程作为目标执行线程。

可选地,上述对当前待执行业务的优先级高于或等于预设优先级时,待执行业务的目标执行线程的确定方法进行了说明。而本实施例中,则对当前待执行业务的优先级低于预设优先级的情况进行说明。

可选地,若当前待执行业务的优先级低于预设优先级,也即当前待执行业务为非核心业务时,则并不需要采用上述类似的方法,休眠其他业务,优先处理待执行业务,而是等待当前正在运行的各线程,并将首个运行结束的线程确定为目标执行线程。

也即,对于非核心业务,可在当前正在运行的各线程中排队运行,等待正在运行的各线程运行结束后,再执行待执行业务。

图5为本申请实施例提供的另一种多线程业务处理方法的流程示意图;可选地,本申请的方法还可以包括:

S501、若当前正在运行的线程数未达到所允许运行的最大线程数。

S502、则从多个空闲线程中选择一个线程作为目标执行线程。

在一些实施例中,可能由于所允许运行的最大线程数较大,使得正在运行的线程数未达到所允许运行的最大线程数。此时,会存在一些空闲线程,那么,则可以直接从多个空闲线程中选择一个线程作为目标执行线程。

上述通过多个实施例,对执行待执行业务的目标执行线程的确定方式进行了详细说明。在确定了目标执行线程后,则可调用该目标执行线程执行待执行的业务。

可选地,步骤S201中,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程之前,本申请的方法还可包括:根据业务平台的服务器配置参数,确定业务平台所允许运行的最大线程数。

可选地,在确定待执行业务的目标执行线程之前,可预先根据业务平台所使用的服务器的配置参数,确定业务平台所允许运行的最大线程数。

可选地,根据业务平台的服务器配置参数,确定业务平台所允许运行的最大线程数,可以包括:根据服务器的中央处理器核数和内存大小,确定业务平台所允许运行的最大线程数。

在一些实施例中,可以根据服务器的CPU核数和内存大小,确定业务平台所允许运行的最大线程数。

通常,所允许运行的最大线程数可以为服务器CPU核数的两倍。可选地,若服务器的CPU核数为单核,则可确定所允许运行的最大线程数为2,那么,则2个线程可同时并行运行,并采用上述的方法所确定的待执行业务的目标执行线程,从2个线程中调用目标执行线程执行待执行业务。

而若服务器的CPU核数为2核或4核,且服务器内存小于16G,则认为服务器的配置一般,其可允许运行的最大线程数为8线程。对于子业务较多的业务,则可通过判断当前正在运行的线程数和最大线程数,确定待执行业务的目标执行线程。

而若服务器的CPU核数大于4核,且服务器内存大于16G,则认为服务器的配置较高,其可允许运行的最大线程数较多,基本可以满足大多业务中各子业务的并行执行,则对于待执行业务,可直接从空闲的线程中确定目标执行线程执行待执行业务。

当然,上述对于服务器配置高低的判断条件可以根据服务器的不断更新换代进行适应性调整,本实施例中仅是作为示例进行说明。

图6为本申请实施例提供的一种多线程业务处理方法的整体流程示意图。可选地,下面将以抄表业务为例,对本申请的多线程业务处理方法的流程进行说明。

对于抄表业务,其对应的子业务可包括:定时任务检测业务、定时任务执行业务、数据发送业务、数据超时业务、数据接收业务和数据存储业务。而待执行业务可以为上述子业务中的任一业务。

A、定时任务检测业务用于执行如下业务流程:

步骤a1、当有抄表业务启动时,定时任务检测业务满足执行条件,则通过本申请上述方法确定定时任务检测业务的目标执行线程,并调用目标执行线程执行定时任务检测业务。

步骤a2、检测到有到达执行时间的定时任务,则跳至步骤a3,否则回到步骤a1。

步骤a3、触发启动定时任务执行业务。

步骤a4、判断数据采集服务(抄表业务)是否停止,如未停止则回到步骤a1循环检测定时任务,如果已停止,则跳至步骤a5。

步骤a5、定时任务检测业务结束,目标执行线程进入休眠状态。

B、定时任务执行业务用于执行如下业务流程:

步骤b1、接收到定时任务检测业务的触发条件,满足定时任务执行业务的执行条件,确定定时任务执行业务的目标执行线程,开始执行定时任务。

步骤b2、检测该定时任务是否需要发送数据指令,如果是,则启动数据发送业务。

步骤b3、启动数据发送业务。

步骤b4、按照不同的定时任务类型,处理不同的定时任务业务。

步骤b5、定时任务执行完成后,启动数据存储业务,保存业务记录。

步骤b6、定时任务执行业务的目标执行线程开始休眠,等待启用信号。

步骤b7、有启动信号时跳至步骤b1,没有启动信号时,跳至步骤b8。

步骤b8、定时任务执行业务结束。

C、数据发送业务用于执行如下业务流程:

步骤c1、接收到定时任务执行业务的触发条件,满足数据发送业务的执行条件,确定数据发送业务的目标执行线程,开始发送数据指令。

步骤c2、根据协议解析模块组装发送指令的数据帧。

步骤c3、获取发送指令的目标发送对象,其中,目标发送对象可以是根据各表的标识所确定是目标表(例如,目标水表)。

步骤c4、发送数据指令至目标发送对象,以使得目标发送对象根据数据指令中所包含的数据参数类型,将数据参数类型对应的数据发送至数据接收业务,并启动检查超时业务。

步骤c5、处理发送结果,如果步骤d2超时,则记录超时结果。

步骤c6、启动数据存储业务,保存发送记录。

步骤c7、数据发送业务结束。

D、检查超时业务用于执行如下业务流程:

步骤d1、接收到数据发送业务的触发条件,满足检查超时业务的执行条件,确定检查超时业务的目标执行线程,开始检测超时。

步骤d2、数据发送业务发送指令超时,则执行步骤c5。

步骤d3、数据接收线程e接收指令超时,则执行步骤e5。

步骤d4、检查超时业务的目标执行线程开始休眠,等待启用信号。

步骤d5、有启用信号时跳至步骤d1,没有启用信号时,跳至步骤d6。

步骤d6、检查超时业务结束。

E、数据接收业务用于执行如下业务流程:

步骤e1、检测接收到目标发送对象(目标水表)发送的数据帧时,满足数据接收业务执行条件,确定数据接收业务的目标执行线程。

步骤e2、解析数据帧。

步骤e3、得到解析后的数据帧对象(所要采集的目标水表发送的数据参数类型对应的数据)。

步骤e4、启动检查超时业务。

步骤e5、处理接收结果,如果步骤e4超时,则记录超时结果。

步骤e6、启动数据存储业务,保存接收记录。

步骤e7、如果接收到的数据帧需要回复数据帧(所要采集的目标水表的数据分为多次发送时,针对每次接收到的数据,需要进行回复),则启动数据发送业务。

步骤e8、启动数据发送业务。

步骤e9、数据接收业务结束。

F、数据存储业务用于执行如下业务流程:

步骤f1、接收到数据发送业务或数据接收业务的触发条件时,满足数据存储业务的执行条件,确定数据存储业务的目标执行线程,开始保存数据(其中,保存的数据可以是由数据接收业务发送的来自多个不同目标水表的数据,例如:水表流量等)。

步骤f2、保存业务流程(其中业务流程可以是根据所保存的数据执行的业务计算,例如:根据各目标水表的数据,计算整个小区的水用量)。

步骤f3、保存业务结果(其中,业务结果即上述业务流程所对应的业务结果)。

步骤f4、保存业务日志(业务执行过程中的所有日志信息)。

上述通过多个线程之间的相互配合调用执行相应业务,在需要时启动线程,不需要时进行休眠,可以有效减轻服务器负荷,节省服务器资源,同时,多个线程之间并发运行,可增加业务处理的吞吐量,提高业务处理效率。

综上所述,本申请实施例提供的多线程业务处理方法,包括:在满足待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,业务类型用于表征待执行业务的业务功能;调用目标执行线程执行待执行业务。本方案中,业务平台可同时对多个智能终端进行数据处理,对于每个智能终端的各业务的执行,均可以是根据业务平台所允许运行的最大线程数,从多个线程中确定执行待执行业务的目标执行线程,从而调用目标执行线程执行待执行业务,通过合理调配各线程之间的关系,使得多个线程之间可以配合执行不同业务,使得服务器性能达到最优,相比于现有技术中,通过单一线程依次执行各智能终端的各业务,本方法通过多个线程并发执行各智能终端的各个业务,可以有效提高业务平台对智能终端业务执行的效率。

下述对用以执行本申请所提供的多线程业务处理方法的装置、服务器及存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。

图7为本申请实施例提供的一种多线程业务处理装置的示意图,该多线程业务处理装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述服务器,或服务器的处理器,也可以理解为独立于上述服务器或处理器之外的在服务器控制下实现本申请功能的组件。该多线程业务处理装置,应用于业务平台,业务平台用于处理多个智能终端的数据,如图7所示,该多线程业务处理装置可包括:确定模块710、执行模块720;

确定模块710,用于在满足当前待执行业务的执行条件时,根据当前待执行业务的业务类型、当前正在运行的线程数以及业务平台所允许运行的最大线程数,确定执行待执行业务的目标执行线程,业务类型用于表征待执行业务的业务功能;

执行模块720,用于调用目标执行线程执行待执行业务。

可选地,确定模块710,具体用于判断当前正在运行的线程数是否达到所允许运行的最大线程数;若是,则根据当前待执行业务的业务类型、以及正在运行的各线程所运行业务的业务类型,确定目标执行线程。

可选地,确定模块710,具体用于根据当前待执行业务的业务类型,确定当前待执行业务的优先级;若当前待执行业务的优先级高于或等于预设优先级,则根据正在运行的各线程对应的业务的业务类型,将正在运行的各线程中执行第一业务的线程确定为目标执行线程,其中,第一业务的优先级低于当前待执行业务的优先级。

可选地,确定模块710,还用于若当前待执行业务的优先级低于预设优先级,则将正在运行的各线程中首个运行结束的线程作为目标执行线程。

可选地,确定模块710,具体用于若当前正在运行的线程数未达到所允许运行的最大线程数;则从多个空闲线程中选择一个线程作为目标执行线程。

可选地,确定模块710,还用于根据业务平台的服务器配置参数,确定业务平台所允许运行的最大线程数。

可选地,确定模块710,具体用于根据服务器的中央处理器核数和内存大小,确定业务平台所允许运行的最大线程数。

上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。

以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。

上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过LAN、WAN、蓝牙、ZigBee、或NFC等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。

需要说明的是,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Singnal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(System-on-a-chip,简称SOC)的形式实现。

图8为本申请实施例提供的一种服务器的结构示意图,该服务器可以是具备数据处理功能的计算设备。

该服务器可包括:处理器801、存储器802。

存储器802用于存储程序,处理器801调用存储器802存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。

其中,存储器802存储有程序代码,当程序代码被处理器801执行时,使得处理器801执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的多线程业务处理方法中的各种步骤。

处理器801可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

可选地,本申请还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于红外通信的AGV调度系统及调度方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!