本发明属于资源调度技术领域,尤其涉及一种资源分配方法及系统。
背景技术:
面对越来越多的对专业性要求较高的计算需求,通过引入专业的硬件加速卡,卸载原本由cpu执行的特定运算,是一种可靠的技术解决方案。这种解决方案不仅成本低,而且可以大大提高专业计算资源的利用率。
目前,在基于硬件加速卡的异构计算机系统中,计算资源分配通常采用轮询调度的静态分配方法。但是,由于每次分配给计算单元的源数据大小有差异,源数据从主机传输到硬件加速卡的时间有差异,计算资源完成源数据计算的时间有差异,生成的新数据大小有差异,新数据从加速卡传输回主机的时间有差异,导致部分计算单元处于阻塞状态,而部分计算单元处于空闲状态,造成计算资源分配不均衡,计算资源利用率较低。
技术实现要素:
有鉴于此,本发明实施例提供了一种资源分配方法及系统,以解决现有技术中计算资源分配不均衡,计算资源利用率较低的问题。
本发明实施例的第一方面提供了一种资源分配方法,包括:
获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程;
获取至少一个申请同一块硬件加速卡计算资源的线程;
按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程;
若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给硬件加速卡中的所有计算单元中排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁;
若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据;
当目标线程的业务数据处理完成后,按照线程申请的时间顺序,将业务互斥锁分配给目标线程;
将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程。
本发明实施例的第二方面提供了一种资源分配系统,包括:
指令获取模块,用于获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程;
线程获取模块,用于获取至少一个申请同一块硬件加速卡计算资源的线程;
第一业务互斥锁分配模块,用于按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程;
目标线程分配模块,用于若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给硬件加速卡中的所有计算单元中排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁;
目标线程处理模块,用于若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据;
第二业务互斥锁分配模块,用于当目标线程的业务数据处理完成后,按照线程申请的时间顺序,将业务互斥锁分配给目标线程;
目标线程注销模块,用于将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程。
本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上所述资源分配方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上所述资源分配方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例提供的资源分配方法及系统,通过获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程;获取至少一个申请同一块硬件加速卡计算资源的线程;按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程;若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁;若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据;按照线程申请的时间顺序,将业务互斥锁分配给目标线程;将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程,从而可以有效解决计算资源分配不均衡,计算资源利用率较低的问题,能够显著提高计算资源利用率,提高了硬件加速卡的应用价值。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的资源分配方法的实现流程图;
图2是本发明实施例二提供的资源分配方法的实现流程图;
图3是本发明实施例三提供的资源分配系统的实现流程图;
图4是本发明实施例四提供的资源分配系统的实现流程图;
图5是本发明实施例五提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
本发明的说明书和权利要求书及上述附图中的术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含一系列步骤或单元的过程、方法或系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
参照图1,图1示出了本发明实施例一提供的资源分配方法的实现流程,本实施例的流程执行主体可以是终端设备,其过程详述如下:
s101:获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程。
当用户启动业务程序时,终端设备获取用户输入的启动指令,根据启动指令启动业务程序。
创建业务程序对应的进程,为进程分配进程号。
业务程序启动后,为业务程序创建对应的进程,为进程分配进程号,具体过程如下:
获取管理互斥锁;
判断已有进程数量是否达到系统预设值;
若已有进程数量达到系统预设值,则直接释放管理互斥锁;
若已有进程数量未达到系统预设值,则获取空余id号,将空余id号注册为业务程序对应进程的进程号,并将已有进程数量加一;
释放管理互斥锁。
其中,管理互斥锁用于当有多个任务需要使用相同资源时,保证没有其他任务可以使用当前任务正在使用的资源。
获取业务数据,并生成至少一个处理业务数据的线程,为线程分配线程号。
具体地,获取业务程序需要处理的业务数据,生成至少一个线程,线程用来处理业务数据,一个业务程序对应的进程包括多个线程,为每个线程分配线程号。其中,为线程分配线程号的过程如下:
获取管理互斥锁;
判断线程所属进程的进程号是否存在;
若线程所属进程的进程号不存在,则直接释放管理互斥锁;
若线程所属进程的进程号存在,则判断进程已有线程数量是否达到进程预设值;
若进程已有线程数量达到进程预设值,则直接释放管理互斥锁;
若进程已有线程数量未达到进程预设值,则获取空余id号,将空余id号注册为线程号,并将进程已有线程数量加一;
释放管理互斥锁。
将进程号、线程号、进程的状态信息和线程的状态信息保存在进程注册表中。
其中,进程注册表用于保存进程和线程的注册信息。进程注册表包括magic识别码、管理互斥锁、当前进程数量、历史进程数量、当前线程数量、历史线程数量、上一次分配的线程号指针、失效进程数量以及在线进程信息。在线进程信息包括进程号和该进程下工作线程数量。当进程或者线程进行注册或者注销时需要对magic识别码进行校验,校验成功后才可以进行注册或者注销。
进一步地,终端设备支持多进程和多线程同时进行注册。
在本实施例中,通过对业务程序对应进程和线程的注册进行管理,并支持多进程和多线程同时进行注册,能够支持资源分配过程中多个业务程序的异步启动,可以适应需要动态增加业务程序的应用场合。
s102:获取至少一个申请同一块硬件加速卡计算资源的线程。
当计算任务较多时,会出现多个线程申请同一块硬件加速卡计算资源的情况,此时,终端设备获取上述申请同一块硬件加速卡计算资源的多个线程。
s103:按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程。
其中,目标线程是指申请同一块硬件加速卡计算资源的线程中获得业务互斥锁的线程。业务互斥锁用于当目标线程正在使用硬件加速卡的计算资源时,保证没有其他线程可以使用上述硬件加速卡的计算资源。
按照线程申请硬件加速卡计算资源的时间顺序,将业务互斥锁分配给最先申请上述硬件加速卡计算资源的目标线程。
s104:若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给硬件加速卡中的所有计算单元中排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁。
若硬件加速卡中所有计算单元的排队线程数量均达到预设值,则报告错误,并释放目标线程的业务互斥锁。
若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则获取硬件加速卡中排队线程数量最少的计算单元,即目标计算单元,将目标线程分配给目标计算单元,并释放目标线程的业务互斥锁。
具体地,若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程所属进程的进程号和目标线程的线程号保存在负载均衡表中目标计算单元对应的环形队列中,并将目标线程的标志位置位,即将目标线程的标志位置1,释放目标线程的业务互斥锁。
其中,负载均衡表为每一个计算单元产生一个先进先出环形队列,先进先出环形队列包括排队线程数量、活动位指针和队列数组。队列数组中的每个数据成员都是一个32位的二进制数,其中第1至13位表示线程号;第14到16位表示线程所属进程的进程号;第32位表示线程的标志位,若线程的标志位为0,则表示线程的业务数据已经处理完成,若线程的标志位为1,则表示线程处于等待状态。
预设值是指上述队列数组的容量。
s105:若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据。
若在目标线程之前的排队线程数量大于零,则目标线程处于等待状态,直至目标线程之前的排队线程的业务数据都处理完成,即在目标线程之前的排队线程数量为零,此时开始处理目标线程的业务数据。
s106:当目标线程的业务数据处理完成后,按照线程申请的时间顺序,将业务互斥锁分配给目标线程。
当目标线程的业务数据处理完成后,目标线程申请业务互斥锁,按照线程申请的时间顺序,将业务互斥锁分配给目标线程。
s107:将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程。
将目标线程的标志位复位是指将目标线程的标志位置0。
注销目标线程具体包括:删除进程注册表中保存的目标线程的线程号和状态信息,并注销目标线程的线程号;若目标线程所属进程中的所有线程都处理完成,则删除进程注册表中保存的目标线程所属进程的进程号和状态信息,并注销目标线程所属进程的进程号。
注销目标线程的线程号的具体过程如下:
获取管理互斥锁;
判断目标线程所属进程的进程号是否存在;
若目标线程所属进程的进程号不存在,则直接释放管理互斥锁;
若目标线程所属进程的进程号存在,则判断目标线程的线程号是否存在;
若目标线程的线程号不存在,则直接释放管理互斥锁;
若目标线程的线程号存在,则注销目标线程的线程号,并将目标线程所属进程的已有线程数量减一;
释放管理互斥锁。
注销目标线程所属进程的进程号的具体过程如下:
获取管理互斥锁;
判断目标线程所属进程的进程号是否存在;
若目标线程所属进程的进程号不存在,则直接释放管理互斥锁;
若目标线程所属进程的进程号存在,则注销目标线程所属进程的进程号,并将目标线程所属进程的已有线程数量减一;
释放管理互斥锁。
进一步地,终端设备支持多进程和多线程同时进行注销。
在本实施例中,通过对业务程序对应进程和线程的注销进行管理,并支持多进程和多线程同时进行注销,能够支持资源分配过程中多个业务程序的异步退出,可以适应需要动态减少业务程序的应用场合。
以一个具体应用场景为例,当用户需要对文件进行压缩时,启动压缩工具对文件数据进行压缩,压缩工具启动后就是一个进程,获取待压缩的文件数据,并生成八个线程,将待压缩的文件数据分配给上述八个线程进行处理。若上述八个线程中的三个线程申请同一块硬件加速卡计算资源,则将业务互斥锁分配给上述三个线程中最先申请上述硬件加速卡计算资源的目标线程。将目标线程分配给上述硬件加速卡中的所有计算单元中排队线程数量最少的目标计算单元,若目标线程之前的排队线程数量为零,则目标计算单元开始对目标线程的文件数据进行压缩。当压缩完成后,将业务互斥锁分配给目标线程,将目标线程的标志位置0,并将目标线程所在环形队列的活动位指针指向下一个待压缩文件数据的线程,释放业务互斥锁,并注销目标线程。若目标线程所属进程即压缩工具下的八个线程都将文件数据压缩完成,则注销压缩工具对应的进程。
在本实施例中,通过获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程;获取至少一个申请同一块硬件加速卡计算资源的线程;按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程;若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁;若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据;按照线程申请的时间顺序,将业务互斥锁分配给目标线程;将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程,从而可以有效解决计算资源分配不均衡,计算资源利用率较低的问题,能够显著提高计算资源利用率,提高了硬件加速卡的应用价值。
实施例二
参照图2,图2示出了本发明实施例二提供的资源分配方法的实现流程。在上述实施例的基础上,本发明实施例详述如下:
s201:创建共享数据区,初始化进程注册表、负载均衡表、管理互斥锁和业务互斥锁。
共享数据区用来保存进程注册表和负载均衡表。
清空进程注册表信息和负载均衡表信息,并设置magic识别码。
s202:获取管理互斥锁。
在访问进程注册表和负载均衡表中的信息之前,要获取管理互斥锁。
s203:获取所有的在线进程信息和在线线程信息,根据在线进程信息和在线线程信息,判断进程注册表中是否存在不在线进程和不在线线程,判断负载均衡表中是否存在不在线线程。
获取内核中所有的在线进程信息,将在线进程信息与进程注册表中保存的进程信息进行对比,判断进程注册表中是否存在不在线进程。
获取内核中所有的在线线程信息,将在线线程信息与进程注册表中保存的线程信息进行对比,判断进程注册表中是否存在不在线线程;将在线线程信息与负载均衡表中保存的线程信息进行对比,判断负载均衡表中是否存在不在线线程。
s204:若进程注册表中存在不在线进程,则删除进程注册表中保存的不在线进程的进程号和状态信息以及不在线进程包含的所有线程的线程号和状态信息,并注销不在线进程的进程号和不在线进程包含的所有线程的线程号。
若进程注册表中保存的所有进程都处于在线状态,则执行步骤s205。
s205:若进程注册表中存在不在线线程,则删除进程注册表中保存的不在线线程的线程号和状态信息,并注销进程注册表中保存的不在线线程的线程号。
若进程注册表中所有线程都处于在线状态,则执行步骤s206。
s206:若负载均衡表中存在不在线线程,则删除负载均衡表中保存的不在线线程的线程号和状态信息,并注销负载均衡表中保存的不在线线程的线程号。
若负载均衡表中所有线程都处于在线状态,则执行步骤s207。
s207:释放管理互斥锁。
当对进程注册表和负载均衡表中的信息处理完成后,释放管理互斥锁。
若内核中不存在在线进程和在线线程,则进入休眠状态,否则重复执行步骤s202至s207。
在本实施例中,通过创建共享数据区,初始化进程注册表、负载均衡表、管理互斥锁和业务互斥锁;获取管理互斥锁;获取所有的在线进程信息和在线线程信息,根据在线进程信息和在线线程信息,判断进程注册表中是否存在不在线进程和不在线线程,判断负载均衡表中是否存在不在线线程;若进程注册表中存在不在线进程,则删除进程注册表中保存的不在线进程的进程号和状态信息以及不在线进程包含的所有线程的线程号和状态信息,并注销不在线进程的进程号和不在线进程包含的所有线程的线程号;若进程注册表中存在不在线线程,则删除进程注册表中保存的不在线线程的线程号和状态信息,并注销进程注册表中保存的不在线线程的线程号;若负载均衡表中存在不在线线程,则删除负载均衡表中保存的不在线线程的线程号和状态信息,并注销负载均衡表中保存的不在线线程的线程号;释放管理互斥锁,能够实时监控进程注册表和负载均衡表中的进程和线程,一旦发现不在线进程或者不在线线程,及时清理进程注册表和负载均衡表中的不在线进程或者不在线线程,减少无效的排队占位,提高资源分配的效率。
实施例三
参照图3,图3示出了本发明实施例三提供的资源分配系统300的结构示意图。本实施例中的资源分配系统300包括:指令获取模块301、线程获取模块302、第一业务互斥锁分配模块303、目标线程分配模块304、目标线程处理模块305、第二业务互斥锁分配模块306和目标线程注销模块307。
指令获取模块301,用于获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程。
指令获取模块301还包括:进程号分配单元,线程号分配单元和存储单元。
进程号分配单元,用于创建业务程序对应的进程,为进程分配进程号。
线程号分配单元,用于获取业务数据,并生成至少一个处理业务数据的线程,为线程分配线程号。
存储单元,用于将进程号、线程号、进程的状态信息和线程的状态信息保存在进程注册表中。
线程获取模块302,用于获取至少一个申请同一块硬件加速卡计算资源的线程。
第一业务互斥锁分配模块303,用于按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程。
目标线程分配模块304,用于若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给硬件加速卡中的所有计算单元中排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁。
目标线程分配模块304,还用于将目标线程所属进程的进程号和目标线程的线程号保存在负载均衡表中所述目标计算单元对应的环形队列中,并将目标线程的标志位置位。
目标线程处理模块305,用于若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据。
第二业务互斥锁分配模块306,用于当目标线程的业务数据处理完成后,按照线程申请的时间顺序,将业务互斥锁分配给目标线程。
目标线程注销模块307,用于将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程。
目标线程注销模块307还包括线程注销单元和进程注销单元。
线程注销单元,用于删除进程注册表中保存的目标线程的线程号和状态信息,并注销目标线程的线程号。
进程注销单元,用于若目标线程所属进程中的所有线程都处理完成,则删除进程注册表中保存的目标线程所属进程的进程号和状态信息,并注销目标线程所属进程的进程号。
在本实施例中,通过指令获取模块获取用户输入的启动指令,根据启动指令启动业务程序,创建业务程序对应的进程,获取业务数据,并生成至少一个处理业务数据的线程;通过线程获取模块获取至少一个申请同一块硬件加速卡计算资源的线程;通过第一业务互斥锁分配模块按照线程申请的时间顺序,将业务互斥锁分配给至少一个申请同一块硬件加速卡计算资源的线程中的目标线程;通过目标线程分配模块,若硬件加速卡中至少有一个计算单元的排队线程数量未达到预设值,则将目标线程分配给排队线程数量最少的目标计算单元,并释放目标线程的业务互斥锁;通过目标线程处理模块,若在目标线程之前的排队线程数量为零,则处理目标线程的业务数据;通过第二业务互斥锁分配模块按照线程申请的时间顺序,将业务互斥锁分配给目标线程;通过目标线程注销模块将目标线程的标志位复位,将目标线程所在环形队列的活动位指针指向下一个待处理业务数据的线程,并释放目标线程的业务互斥锁,注销目标线程,从而可以有效解决计算资源分配不均衡,计算资源利用率较低的问题,能够显著提高计算资源利用率,提高了硬件加速卡的应用价值。
实施例四
参照图4,图4示出了本发明实施例四提供的资源分配系统300的结构示意图。在上述实施例的基础上,本实施例中的资源分配系统300还包括:共享数据区创建模块308、管理互斥锁获取模块309、判断模块310、不在线进程注销模块311、第一不在线线程注销模块312、第二不在线线程注销模块313和管理互斥锁释放模块314。
共享数据区创建模块308,用于创建共享数据区,初始化进程注册表、负载均衡表、管理互斥锁和业务互斥锁;
管理互斥锁获取模块309,用于获取管理互斥锁;
判断模块310,用于获取所有的在线进程信息和在线线程信息,根据在线进程信息和在线线程信息,判断进程注册表中是否存在不在线进程和不在线线程,判断负载均衡表中是否存在不在线线程;
不在线进程注销模块311,用于若进程注册表中存在不在线进程,则删除进程注册表中保存的不在线进程的进程号和状态信息以及不在线进程包含的所有线程的线程号和状态信息,并注销不在线进程的进程号和不在线进程包含的所有线程的线程号;
第一不在线线程注销模块312,用于若进程注册表中存在不在线线程,则删除进程注册表中保存的不在线线程的线程号和状态信息,并注销进程注册表中保存的不在线线程的线程号;
第二不在线线程注销模块313,用于若负载均衡表中存在不在线线程,则删除负载均衡表中保存的不在线线程的线程号和状态信息,并注销负载均衡表中保存的不在线线程的线程号;
管理互斥锁释放模块314,用于释放管理互斥锁。
在本实施例中,通过共享数据区创建模块创建共享数据区,初始化进程注册表、负载均衡表、管理互斥锁和业务互斥锁;通过管理互斥锁获取模块获取管理互斥锁;通过判断模块获取所有的在线进程信息和在线线程信息,根据在线进程信息和在线线程信息,判断进程注册表中是否存在不在线进程和不在线线程,判断负载均衡表中是否存在不在线线程;通过不在线进程注销模块,若进程注册表中存在不在线进程,则删除进程注册表中保存的不在线进程的进程号和状态信息以及不在线进程包含的所有线程的线程号和状态信息,并注销不在线进程的进程号和不在线进程包含的所有线程的线程号;通过第一不在线线程注销模块,若进程注册表中存在不在线线程,则删除进程注册表中保存的不在线线程的线程号和状态信息,并注销进程注册表中保存的不在线线程的线程号;通过第二不在线线程注销模块,若负载均衡表中存在不在线线程,则删除负载均衡表中保存的不在线线程的线程号和状态信息,并注销负载均衡表中保存的不在线线程的线程号;通过管理互斥锁释放模块释放管理互斥锁,能够实时监控进程注册表和负载均衡表中的进程和线程,一旦发现不在线进程或者不在线线程,及时清理进程注册表和负载均衡表中的不在线进程或者不在线线程,减少无效的排队占位,提高资源分配的效率。
实施例五
参照图5,本发明实施例还提供了一种终端设备5,包括存储器51、处理器50以及存储在存储器中并可在处理器上运行的计算机程序52,所述处理器50执行所述计算机程序52时实现如上述实施例中所述的各方法实施例中的步骤,例如图1所示的步骤s101至步骤s107。或者,所述处理器50执行所述计算机程序52时实现如上述实施例中所述的各系统实施例中的各模块的功能,例如图3所示的模块301至307的功能。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器50、存储器51。例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器50可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端设备的内部存储单元,例如终端设备的硬盘或内存。所述存储器51也可以是所述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器51还可以既包括终端设备的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序52以及所述终端设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
实施例六
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述实施例中所述的各方法实施例中的步骤,例如图1所示的步骤s101至步骤s107。或者,所述计算机程序被处理器执行时实现如上述实施例中所述的各系统实施例中的各模块的功能,例如图3所示的模块301至307的功能。
所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例系统中的模块或单元可以根据实际需要进行合并、划分和删减。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。