一种基于多线程的文件上传系统及方法技术方案

技术编号:10114001 阅读:149 留言:0更新日期:2014-06-04 18:17
本发明专利技术公开了一种基于多线程的文件上传系统及方法,其中,所述方法包括:首先,获取客户机的配置参数,同时获取用户选择需要上传的文件个数filecount;然后,根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n;最后,把准备上传的文件按文件大小均衡的原则分配给n个线程,n个线程同时工作,直至完成上传。其提高大批量小文件(例如word、txt、裕邦文件、excel等办公文件)的上传效率;并且,在上传过程中,通过对大批量的小文件进行分组(分组原则为每一组文件大小的差值最小最均衡)并通过多个线程上传,实现充分利用上传带宽的效果。

【技术实现步骤摘要】
一种基于多线程的文件上传系统及方法
本专利技术涉及大批量小文件上传领域,特别涉及一种基于多线程的文件上传系统及方法。
技术介绍
在现有技术中,大批量的文件上传会采用多线程技术提高效率,但是在分配线程数额时多采用一刀切模式,即忽视本地电脑硬件的配置情况而只分配固定的线程数。这就造成两个问题:1、硬件配置好的电脑分配的线程不够使得硬件机能没有得到充分应用从而影响上传效率;2、硬件配置低的电脑分配的线程过多造成电脑出现卡机同样影响了文件上传效率。有鉴于此,现有技术有待改进和提高。
技术实现思路
鉴于上述现有技术的不足之处,本专利技术的目的在于提供一种基于多线程的文件上传系统及方法,从而解决现有技术在大批量小文件上传过程中,不考虑硬件本身而直接采取多线程将可能出现卡机等情况,甚至影响系统性能的问题。为了达到上述目的,本专利技术采取了以下技术方案:一种基于多线程的文件上传的方法,其中,所述方法包括以下步骤:S1、获取客户机的配置参数,其中,所述配置参数包括CPU个数cpucount:S2、获取用户选择需要上传的文件个数filecount;S3、根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n;S4、把准备上传的文件按文件大小均衡的原则分配给n个线程,n个线程同时工作,直至完成上传。所述的基于多线程的文件上传的方法,其中,所述步骤S1中通过读取注册表获取本机CPU的名称和频率,通过WindowsAPIGetSystemInfo获取CPU个数cpucount以及CPU型号。所述的基于多线程的文件上传的方法,其中,所述步骤S3中按照预定规则确定所需建立的线程个数n具体包括:若filecount≥(2*cpucount+2),则n=2*cpucount+2;若filecount<(2*cpucount+2),则n=filecount。所述的基于多线程的文件上传的方法,其中,所述步骤S4中把准备上传的文件按文件大小均衡的原则分配给n个线程具体包括:S41、先按文件大小做升序排列;S42、把前面n个文件分别分配给n个线程;S43、然后从文件序列的最后一个开始,把文件依次分配给当前线程文件中大小最小的一个线程。所述的基于多线程的文件上传的方法,其中,所述步骤S43具体包括以下步骤:S431、比较当前线程所含文件体积的大小,然后,将剩余的文件依次分配给当前线程所含文件体积中体积最小的一个线程;S432、重复上述步骤直至将所有文件分配完成。所述的基于多线程的文件上传的方法,其中,所述步骤S43具体包括以下步骤:S431*、根据所含文件总体积大小对线程由小到大进行升序排序;S432*、将剩余的文件依次分配给按序排列的线程;S433*、剩余的文件数量小于线程数,则步骤完毕;剩余的文件数量大于线程数,则重复上述步骤直至将所有文件分配完成。一种基于多线程的文件上传的系统,其中,所述系统包括:第一获取单元,用于获取客户机的配置参数,其中,所述配置参数包括CPU个数cpucount:第二获取单元,用于获取用户选择需要上传的文件个数filecount;确定单元,用于根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n;上传单元,用于把准备上传的文件按文件大小均衡的原则分配给n个线程,n个线程同时工作,直至完成上传。所述的基于多线程的文件上传的系统,其中,所述第一获取单元中通过读取注册表获取本机CPU的名称和频率,通过WindowsAPIGetSystemInfo获取CPU个数cpucount以及CPU型号。所述的基于多线程的文件上传的系统,其中,所述上传单元中把准备上传的文件按文件大小均衡的原则分配给n个线程具体包括:排列子单元,用于先按文件大小做升序排列;第一分配子单元,用于把前面n个文件分别分配给n个线程;第二分配子单元,用于然后从文件序列的最后一个开始,把文件依次分配给当前线程文件中大小最小的一个线程。所述的基于多线程的文件上传的系统,其中,所述确定单元中按照预定规则确定所需建立的线程个数n具体包括:若filecount≥(2*cpucount+2),则n=2*cpucount+2;若filecount<(2*cpucount+2),则n=filecount。相较于现有技术,本专利技术提供的基于多线程的文件上传系统及方法具有以下优点:(1)通过注册表和操作系统自带接口读取CPU核心来分配线程数额,提高大批量小文件(例如word、txt、裕邦文件、excel等办公文件)的上传效率;(2)在上传过程中,通过对大批量的小文件进行分组(分组原则为每一组文件大小的差值最小最均衡)并通过多个线程上传,实现充分利用上传带宽的效果。附图说明图1为本专利技术的基于多线程的文件上传方法的流程图。图2为本专利技术的基于多线程的文件上传系统的结构框图。具体实施方式本专利技术提供一种基于多线程的文件上传系统及方法,为使本专利技术的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。请参阅图1,其为本专利技术的基于多线程的文件上传方法的流程图。如图所示,所述基于多线程的文件上传的方法包括以下步骤:S1、获取客户机的配置参数,其中,所述配置参数包括CPU个数cpucount:S2、获取用户选择需要上传的文件个数filecount;S3、根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n;S4、把准备上传的文件按文件大小均衡的原则分配给n个线程,n个线程同时工作,直至完成上传。下面分别针对上述步骤进行详细描述。所述步骤S1为获取客户机的配置参数,其中,所述配置参数包括CPU个数cpucount。具体来说,通过注册表和操作系统自带接口读取CPU核心来分配线程数额,提高大批量小文件(例如word、txt、裕邦文件、excel等办公文件)的上传效率。在本专利技术实施例中,通过读取注册表获取本机CPU的名称和频率,通过WindowsAPIGetSystemInfo获取CPU个数cpucount以及CPU型号。这是本专利技术的关键所在:创造性的根据CPU实际参数来自动配置多线程上传的数目,即能够保证用户机的运行效率,又最大限度的利用系统资源完成快速上传。所述步骤S2为获取用户选择需要上传的文件个数filecount。所述步骤S3为根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n。即根据数cpucount、filecount两个数值,按照预先设定的规则来确定所需建立的线程个数n。与现有技术不同的是,在确定所需建立的线程个数n时,除了考虑到文件个数filecount之外,我们创造性地引入CPU核心个数这一参数,来确定所需建立的线程个数n。即n=f(cpucount,filecount)。在本实施例中,我们根据下述公式来确定线程个数n:若filecount≥(2*cpucount+2),则n=2*cpucount+2;若filecount<(2*cpucount+2),则n=filecount。所述步骤S4为把准备上传本文档来自技高网...
一种基于多线程的文件上传系统及方法

【技术保护点】
一种基于多线程的文件上传的方法,其特征在于,所述方法包括以下步骤:     S1、获取客户机的配置参数,其中,所述配置参数包括CPU个数cpucount:S2、获取用户选择需要上传的文件个数filecount;S3、根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n;S4、把准备上传的文件按文件大小均衡的原则分配给n个线程,n个线程同时工作,直至完成上传。

【技术特征摘要】
1.一种基于多线程的文件上传的方法,其特征在于,所述方法包括以下步骤:S1、获取客户机的配置参数,其中,所述配置参数包括CPU个数cpucount:S2、获取用户选择需要上传的文件个数filecount;S3、根据CPU个数cpucount和文件个数filecount,按照预定规则确定所需建立的线程个数n;S4、把准备上传的文件按文件大小均衡的原则分配给n个线程,即将文件中体积最大的放在所含文件总体积最小的线程中,再将次大的文件放入所含文件总体积次小的线程中,以此类推,n个线程同时工作,直至完成上传;所述步骤S1中通过读取注册表获取本机CPU的名称和频率,通过WindowsAPIGetSystemInfo获取CPU个数cpucount以及CPU型号;所述步骤S3中按照预定规则确定所需建立的线程个数n具体包括:若filecount≥(2*cpucount+2),则n=2*cpucount+2;若filecount<(2*cpucount+2),则n=filecount;所述步骤S4中把准备上传的文件按文件大小均衡的原则分配给n个线程具体包括:S41、先按文件大小做升序排列;S42、把前面n个文件分别分配给n个线程;S43、然后从文件序列的最后一个开始,把剩余的文件依次分配给当前线程所含文件体积中体积最小的一个线程;所述文件大小均衡原则还具体包括:将文件依据所述原则分别放入线程之前或者同时进行升序排序编组,之后进入线程不需要再对比大小而是无停顿进入线程内。2.根据权利要求1所述的基于多线程的文件上传的方法,其特征在于,所述步骤S43具体包括以下步骤:S431、比较当前线程所含文件体积的大小,然后,将剩余的文件依次分配给当前线程所含文件体积中体积最小的一个线程;S432、重复上述步骤直至将所有文件分配完成。3.根据权利要求1所述的基于多线程的文件上传的方法,其特征在于,所述...

【专利技术属性】
技术研发人员:谭曼
申请(专利权)人:长沙裕邦软件开发有限公司
类型:发明
国别省市:湖南;43

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

1