多线程下载方法和装置及计算设备与流程

文档序号:18515884发布日期:2019-08-24 09:27阅读:146来源:国知局
多线程下载方法和装置及计算设备与流程

本发明总体上涉及文件下载技术领域,特别是涉及一种尽可能合理地保持原有线程数进行下载的方法和装置以及计算设备。



背景技术:

下载速度是文件下载领域的基础性能指标之一。为了更大程度地优化使用网络带宽和服务器资源由此达到下载速度最大化,目前普遍采用多线程分段下载机制。即,开多个线程同时并行去请求下载文件,每个线程都负责下载指定文件的部分内容,当所有线程都完成下载时,整个文件的全部内容就下载完成。

然而,现有技术的这种分段算法只有在网络状况非常理想的情况下能实现下载速度的最大化。实际上,由于线上的网络环境和运行时客户端的内存性能的不可控,会导致每个分段线程的下载速度是不一样的,由此有些线程会先完成下载,有些会后完成下载。

而且,待下载文件越大或网络带宽越小,各线程不同时下载完成的情况就越明显。这会使得,随着下载过程的进行,实际参与下载的线程数越来越少,造成了下载速度降低的情况。

因此,需要一种能够解决上述问题,使得能够实现下载速度最大化、同时保持下载速度稳定的文件分段下载机制。



技术实现要素:

本发明的一个目的在于,提供一种尽可能合理地保持原有线程数的多线程下载优化机制,使得在整个文件下载过程中都能够充分利用网络带宽和服务器资源,由此达到下载速度最大化,提升用户的下载体验。

为了实现上述目的,本发明的多线程下载方法和装置,使得每当一条线程完成下载时,根据相关因素进行条件约束判断,并在满足条件的情况下开启一条新线程,并利用该新线程来承担当前未完成下载的线程的部分下载任务。

根据本发明的一个方面,提供了一种文件的多线程下载方法,其中待下载文件被划分成N个文件区间,每个所述文件区间对应于一条下载线程Ti,其中i=1···N,N大于1,所述多线程下载方法包括:

增设线程判断步骤,用于在一条线程完成相应的下载任务而退出的情况下,判断是否满足新线程增设条件;和

新线程开启步骤,用于响应于判定满足所述新线程增设条件,开启一条新线程并重新分配线程下载任务。

利用本方法,解决了多线程分段下载时,不同线程因网络情况、内存性能等因素出现的不同时下载完成,造成的剩余下载时间里实际参与下载的线程数越来越少而降低了下载速度的问题,使得尽可能合理地保持原有的线程数进行多线程下载,由此实现下载速度最大化,并同时保持下载速度稳定。

在本发明的一个实施例中,所述判断是否满足新线程增设条件的步骤包括:根据特定条件因素,来判断是否满足新线程增设条件,其中所述特定条件因素包括以下中的任一个或多个的组合:剩余下载大小Lm;所有N条线程在指定时间内的平均下载速度Sv;以及所有N条线程在请求网络连接时的平均连接耗时Cv。

在本发明的一个实施例中,所述判断是否满足新线程增设条件的步骤还包括:获取所有未完成下载任务的线程各自的当前剩余下载大小;确定当前剩余下载大小最多的线程Tm;以及将所确定的线程Tm相应的当前剩余下载大小确定为所述剩余下载大小Lm。

在本发明的一个实施例中,所述新线程增设条件包括以下中的任一项或多项:剩余下载大小Lm大于重分段阈值Lt;和理论剩余下载时间Ct大于理论最小加速时长Cs,其中,所述理论剩余下载时间Ct=剩余下载大小Lm/平均下载速度Sv,所述理论最小加速时长Cs与平均连接耗时Cv相关。

在本实施例中,考虑了开启新线程的连接损耗和/或提速阈值,避免了在剩余下载量较小和/或剩余下载时间较短的情况下开启新线程,使得因连接耗时过长反而实际延长了总体下载时间。

在本发明的一个实施例中,所述开启一条新线程并重新分配线程下载任务的步骤包括:将当前剩余下载大小最多的线程Tm的部分下载任务分配给所述新线程。

在本发明进一步的实施例中,所述将当前剩余下载大小最多的线程Tm的部分下载任务分配给所述新线程的步骤包括:计算针对所述新线程的预留大小Ls=平均连接耗时Cv×平均下载速度Sv;和设定针对所述新线程的下载任务为(Lm-Ls)/2,并相应地调整所述线程Tm的下载区间。

在本发明的一个实施例中,所述多线程下载方法还包括:重复执行所述增设线程判断步骤和所述新线程开启步骤,直到下载完成整个所述待下载文件。

根据本发明的另一个方面,提供了一种文件的多线程下载装置,其中待下载文件被划分成N个文件区间,每个所述文件区间对应于一条下载线程Ti,其中i=1···N,N大于1,所述多线程下载装置包括:增设线程判断单元,配置为在一条线程完成相应的下载任务而退出的情况下,判断是否满足新线程增设条件;和新线程开启单元,配置为响应于判定满足所述新线程增设条件,开启一条新线程并重新分配线程下载任务。

在本发明的一个实施例中,所述增设线程判断单元进一步被配置为根据特定条件因素,来判断是否满足新线程增设条件,其中所述特定条件因素包括以下中的任一个或多个的组合:剩余下载大小Lm;所有N条线程在指定时间内的平均下载速度Sv;以及所有N条线程在请求网络连接时的平均连接耗时Cv。

在本发明的一个实施例中,所述增设线程判断单元还包括:剩余下载大小获取模块,配置为获取所有未完成下载任务的线程各自的当前剩余下载大小;目标线程确定模块,配置为确定当前剩余下载大小最多的线程Tm;以及剩余下载大小确定模块,配置为将所确定的线程Tm相应的当前剩余下载大小确定为所述剩余下载大小Lm。

在本发明的一个实施例中,所述新线程增设条件包括以下中的任一项或多项:剩余下载大小Lm大于重分段阈值Lt;和理论剩余下载时间Ct大于理论最小加速时长Cs,其中,所述理论剩余下载时间Ct=剩余下载大小Lm/平均下载速度Sv,所述理论最小加速时长Cs与平均连接耗时Cv相关。

在本发明的一个实施例中,所述新线程开启单元包括:重分段模块,配置为将当前剩余下载大小最多的线程Tm的部分下载任务分配给所述新线程。

在本发明进一步的实施例中,所述重分段模块包括:预留大小计算模块,配置为计算针对所述新线程的预留大小Ls=平均连接耗时Cv×平均下载速度Sv;和下载任务设置模块,配置为设定针对所述新线程的下载任务为(Lm-Ls)/2,并相应地调整所述线程Tm的下载区间。

在本发明的一个实施例中,所述多线程下载装置还包括:重复使能单元,配置为使得所述增设线程判断单元和所述新线程开启单元重复操作,直到下载完成整个所述待下载文件。

根据本发明的又一个方面,提供了一种计算设备,包括:网络接口,所述网络接口使得所述计算设备能够经由一个或多个网络进行文件的多线程下载;存储器,通过所述网络接口下载的文件存储在所述存储器中;以及一个或多个处理器,与所述网络接口和所述存储器相连接,所述一个或多个处理器配置为将待下载文件划分成多个文件区间,每个所述文件区间对应于一条下载线程,并执行以下操作:在一条线程完成相应的下载任务而退出的情况下,判断是否满足新线程增设条件;和响应于判定满足所述新线程增设条件,开启一条新线程并重新分配线程下载任务。

利用本发明的多线程下载方法和装置及计算设备,使得每当一条线程完成下载时,根据相关因素进行条件约束判断,并在满足条件的情况下开启一条新线程,并利用该新线程来承担当前未完成下载的线程的部分下载任务,由此解决了多线程不同时下载完成造成的线程数越来越少而降低了下载速度的问题,使得尽可能合理地保持原有的线程数进行多线程下载,从而实现下载速度最大化,并同时保持下载速度稳定。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1是示出了根据本发明一实施例的计算设备的结构框图。

图2是示出了根据本发明一实施例的文件多线程下载方法的总流程图。

图3是示出了根据本发明一实施例的文件多线程下载装置的功能框图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

如前所述,为了提升下载速度以及用户的下载体验,本发明的多线程下载优化机制,使得每当一条线程完成下载时,根据相关因素进行条件约束判断,并在满足条件的情况下开启一条新线程,并利用该新线程来承担当前未完成下载的线程的部分下载任务,由此解决了多线程不同时下载完成造成的线程数越来越少而降低了下载速度的问题,使得尽可能合理地保持原有的线程数进行多线程下载。

下面将参照图1至图3来具体地描述本发明的实施例。图1是示出了根据本发明一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于网络接口110、存储器120以及一个或多个处理器130。处理器130与网络接口110和存储器120相连接。在本发明的一个实施例中,计算设备100的上述以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本发明范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。

网络接口110使得计算设备100能够经由一个或多个网络通信。这些网络的示例包括局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。网络接口110可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE 802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

通过网络接口110下载的文件存储在存储器120中的指定位置。存储器120可包括存储文件形式或其他形式的内容的任何类型的存储设备中的一个或多个,包括磁硬盘驱动器、固态硬驱、半导体存储设备、闪存,或者能够存储程序指令或数字信息的任何其他计算机可读可写存储介质。

处理器130能够将待下载文件划分成N个文件区间,其中N为大于1的自然数,并使得每个文件区间对应于一条下载线程Ti,其中i=1···N。

需要指出的是,尽管在实践中通常会将待下载文件等分,但所划分的各文件区间的大小不必然均等,可以根据需要调整各条下载线程对应的文件区间的大小。

还需要指出的是,分段下载的线程数N并非越大越好。N越大性能开销也越大,网络连接耗时也越多,实际上不一定能够实现下载速度的最大化。实践中,可以综合考虑网络环境、内存性能等因素确定分段下载的线程数N。

处理器130合理地增设线程的处理可以参见图2。图2示出了根据本发明一实施例的文件多线程下载方法200的总体流程图。文件多线程下载方法200在某条线程下载完成对应的文件区间并退出后执行。

方法200开始于增设线程判断步骤,具体地,处理器130在一条线程完成相应的下载任务而退出的情况下,判断是否满足新线程增设条件。

在本发明的一个实施例中,处理器130可以被配置为根据特定条件因素,来判断是否满足新线程增设条件。这里所称的特定条件因素包括以下因素中的任一个或多个的组合:剩余下载大小Lm;所有N条线程在指定时间(例如,10秒)内的平均下载速度Sv;以及所有N条线程在请求网络连接时的平均连接耗时Cv。

在本发明的一个实施例中,剩余下载大小Lm可以如下确定:首先,遍历所有线程Ti,i=1-N,以获取所有未完成下载任务的线程各自的当前剩余下载大小;接着,确定当前剩余下载大小最多的线程Tm;最后,将所确定的线程Tm相应的当前剩余下载大小确定为所述剩余下载大小Lm。

如图2所示,在步骤S210,处理器130判断线程Tm的剩余下载大小Lm是否大于重分段阈值Lt。在判定Lm不大于Lt的情况下(步骤S210中的“否”分支),则退出方法200(步骤S290)。在一个示例中,Lt可以设定为1Mb。即,若各线程的剩余下载文件大小都不足1Mb,则优选地不建议进行再次分段处理,以避免再次分段本身的损耗使得整体下载时间反而延长。

本领域普通技术人员将会理解,这里将重分段阈值Lt设置为1Mb仅仅是出于例示的目的,并不意味着对重分段阈值的限定。本领域技术人员可以根据实际需要设定该阈值。

若在步骤S210中判定Lm大于Lt(步骤S210中的“是”分支),则如图2所示,在步骤S230中,判断理论剩余下载时间Ct是否大于理论最小加速时长Cs。在判定Ct不大于Cs的情况下(步骤S230中的“否”分支),则退出方法200(步骤S290)。

这里,理论剩余下载时间Ct=剩余下载大小Lm/平均下载速度Sv,而理论最小加速时长Cs与平均连接耗时Cv相关。具体地,Cs=Cv+Cm,这里Cm为提速阈值,用于表征理论上会产生提速效果的最短下载时间。在一个示例中,Cm可以设定为5秒。换言之,理论上开启一条新线程,至少要能下载5秒以上,才会开始有提速效果。

在本实施例中,考虑了开启新线程的连接损耗和/或提速阈值,避免了在剩余下载量较小和/或剩余下载时间较短的情况下开启新线程,使得因连接耗时过长反而实际延长了总体下载时间。

若在步骤S230中判定Ct大于Cs(步骤S230中的“是”分支),如图2所示,方法200进入新线程开启步骤S250。即,处理器130响应于判定满足新线程增设条件,确定开启一条新线程。

如图2的步骤S270所示,处理器130确定新线程的下载文件区间,并调整还在执行下载任务的其他线程的下载文件区间。

在本发明的一个实施例中,处理器130将当前剩余下载大小最多的线程Tm的部分下载任务重新分配给新线程。具体地,将Tm的剩余下载任务的后半部分分配给新线程。

在本发明进一步的实施例中,处理器130可以被配置为计算针对新线程的预留大小Ls=平均连接耗时Cv×平均下载速度Sv。预留大小Ls是指,理论上开启新线程进行网络请求的耗时过程中,原线程Tm仍然在继续下载,Ls就是这段时间内理论上下载的文件大小。

接着,处理器130针对新线程设定下载任务为(Lm-Ls)/2,并相应地调整线程Tm的下载区间。

在执行完步骤S270之后,方法200响应于另一根线程下载完成而返回到步骤S210,继续上述增设线程判断步骤和新线程开启步骤,直到下载完成整个待下载文件,方法200结束。

为了更加清晰地阐述本发明的原理,下面将参照一具体实例来描述本发明的多线程下载机制的实现过程。

假设待下载文件大小为300Mb,分三段线程T1、T2和T3进行下载,各自对应的下载区间分别是A[0-100Mb]、B[100Mb-200Mb]和C[200Mb-300Mb]。

步骤1,分别记录线程T1、T2和T3的网络请求连接耗时,并计算平均连接耗时Cv。分别记录线程T1、T2和T3在指定时间(例如,10秒)内的下载速度,并计算平均下载速度Sv。为了便于说明,本例中假设Cv=1s(秒),Sv=1Mb/s(兆/秒)。

步骤2,在某一线程(例如,T2)下载完成时,进入再次分段逻辑。遍历T1、T2和T3的线程集合,确定当前剩余下载大小最多的那根线程,假设为T3,并将T3的当前剩余下载大小定义为Lm,这里假设Lm=56Mb。

步骤3,判断剩余大小Lm是否大于Lt,在本例中将Lt设定为1Mb。若判定Lm不大于1Mb,则退出本发明的再次分段逻辑。若判定Lm大于1Mb,则逻辑进行到步骤4。

步骤4,计算理论剩余下载时间Ct=剩余下载大小Lm/平均下载速度Sv。

步骤5,计算理论最小加速时长Cs=平均连接耗时Cv+提速阈值Cm。在本例中,Cm可以设定为5秒。因此,本例中,理论最小加速时长Cs=1s+5s=6s(秒)。

步骤6,判断理论剩余下载时间Ct是否大于理论最小加速时长Cs,即,6秒。若判定Ct不大于6秒,则退出本发明的再次分段逻辑。若判定Ct大于6秒,则进行到步骤7。

步骤7,计算预留大小Ls=平均连接耗时Cv×平均下载速度Sv。在本例中,Ls=1s×1Mb/s=1Mb。

步骤8,开启新线程T4,并确定新线程的下载量为(Lm-Ls)/2=(56Mb-6Mb)/2=25Mb。接着,确定新线程T4的下载区间为D[275-300Mb],同时调整线程T3的下载区间为C’[200Mb-275Mb]。

步骤9,继续等待另一个线程下载完成,然后返回到步骤2,顺序重复执行上述步骤2-8,直到完成整个文件的下载。

利用本方法,解决了多线程分段下载时,不同线程因网络情况、内存性能等因素出现的不同时下载完成,造成的剩余下载时间里实际参与下载的线程数越来越少而降低了下载速度的问题,使得尽可能合理地保持原有的线程数进行多线程下载,由此实现下载速度最大化,并同时保持下载速度稳定。

图3出了根据本发明一实施例的文件多线程下载装置300的功能框图。多线程下载装置300的功能模块可以由实现本发明原理的硬件、软件或硬件和软件的结合来实现,例如通过图1所示的计算设备100中的一个或多个处理器130来实现。本领域技术人员可以理解的是,图3中所描述的功能模块可以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者更进一步的限定。

参照图3,为了最大化下载速度,多线程下载装置300被配置为包括增设线程判断单元310和新线程开启单元330。待下载文件被划分成N个文件区间,每个文件区间对应于一条下载线程Ti,其中i=1···N,N为大于1的自然数。

需要指出的是,尽管在实践中通常会将待下载文件等分,但所划分的各文件区间的大小不必然均等,可以根据需要调整各条下载线程对应的文件区间的大小。

还需要指出的是,分段下载的线程数N并非越大越好。N越大性能开销也越大,网络连接耗时也越多,实际上不一定能够实现下载速度的最大化。实践中,可以综合考虑网络环境、内存性能等因素确定分段下载的线程数N。

增设线程判断单元310被配置为在一条线程完成相应的下载任务而退出的情况下,判断是否满足新线程增设条件。

在本发明的一个实施例中,增设线程判断单元310进一步被配置为根据特定条件因素,来判断是否满足新线程增设条件。这里所称的特定条件因素包括以下因素中的任一个或多个的组合:剩余下载大小Lm;所有N条线程在指定时间内的平均下载速度Sv;以及所有N条线程在请求网络连接时的平均连接耗时Cv。

在本发明的一个实施例中,增设线程判断单元310还包括:剩余下载大小获取模块311,配置为获取所有未完成下载任务的线程各自的当前剩余下载大小;目标线程确定模块313,配置为确定当前剩余下载大小最多的线程Tm;以及剩余下载大小确定模块315,配置为将所确定的线程Tm相应的当前剩余下载大小确定为剩余下载大小Lm。

在本发明的一个实施例中,新线程增设条件包括以下中的任一项或多项:剩余下载大小Lm大于重分段阈值Lt;和理论剩余下载时间Ct大于理论最小加速时长Cs,其中,理论剩余下载时间Ct=剩余下载大小Lm/平均下载速度Sv,理论最小加速时长Cs与平均连接耗时Cv相关。在一个实施例中,理论最小加速时长Cs还与提速阈值相关。

在本实施例中,考虑了开启新线程的连接损耗和/或提速阈值,避免了在剩余下载量较小和/或剩余下载时间较短的情况下开启新线程,使得因连接耗时过长反而实际延长了总体下载时间。

响应于增设线程判断单元310判定满足新线程增设条件,新线程开启单元330配置为开启一条新线程并重新分配线程下载任务。

在本发明的一个实施例中,新线程开启单元330包括重分段模块331,配置为将当前剩余下载大小最多的线程Tm的部分下载任务分配给开启的新线程。

在本发明进一步的实施例中,重分段模块331包括:预留大小计算模块333,配置为计算针对新线程的预留大小Ls=平均连接耗时Cv×平均下载速度Sv;和下载任务设置模块335,配置为设定针对新线程的下载任务为(Lm-Ls)/2,并相应地调整线程Tm的下载区间。

在本发明的一个实施例中,多线程下载装置300还包括重复使能单元350,配置为使得增设线程判断单元310和新线程开启单元330重复操作,直到下载完成整个待下载文件。

综上所述,利用本发明的多线程下载方法和装置及计算设备,使得每当一条线程完成下载时,根据相关因素进行条件约束判断,并在满足条件的情况下开启一条新线程,并利用该新线程来承担当前未完成下载的线程的部分下载任务,由此解决了多线程不同时下载完成造成的线程数越来越少而降低了下载速度的问题,使得尽可能合理地保持原有的线程数进行多线程下载,从而实现下载速度最大化,并同时保持下载速度稳定。

此外,根据本发明的方法还可以实现为一种计算机程序,该计算机程序包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。或者,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的上述方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1