其实,早在计算机发明以前,就已经有了进度条的概念。1896 年,波兰经济学家 Karol Adamiecki发明了一种叫作harmonogram(波兰语,时间表)的图表;同一时间,亨利·甘特(Henry Gantt)提出相似的方法并在西方普及。Adamiecki的图表就被叫作为甘特图。bash
后来,计算机出现,甘特图这个概念后来被用于计算领域。主要用来计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能须要处理时间等,通常以长方形条状显示。多线程
人类史上的第一个在计算机中进度条,出如今 Mitchell Model 1979 年的博士论文。Model 使用进度条来表达电脑执行任务的进度,这也是咱们如今常看到的进度条。spa
计算机领域中引入进度条,主要是经过图形化的形式告知用户计算机正在努力工做中,试想下,若是没有进度条,那么用户就没法之道程序是处理中,仍是失去了响应。也没法知道程序处理的大概进展。线程
因此,进度条更多的是为了知足用户心理,缓解用户焦虑而设计。设计
可是,计算机中显示的进度条其实并非真正的进度,而是预估出来的。一般的计算方式是:3d
操做数量/总操做数量=进度条百分比复制代码
好比咱们进行文件拷贝,当文件总大小事100M的时候,计算机能够根据已经拷贝的文件大小和时间,预估出文件所有拷贝完须要的总时长,而后就能够根据已用时长和总时长的对比,计算出进度了。code
咱们在《如何给女友解释什么是P2P?》中其实介绍过,如今的下载软件都是采用P2P技术进行文件下载的。cdn
在P2P模式下,当咱们想要下载一个电影的时候,并非从一个资源处串行下载的。而是会从多个P2P节点上分别多线程的进行下载,而后再把下载后的资源整合到一块儿。blog
这个过程就像咱们组装电脑同样,咱们同时从不一样的店铺购买不一样的电脑配件,而后本身组装电脑。图片
可是,咱们知道 ,因为受到发货地、发货时间、物流等影响,全部配件的到达时间确定不是同样的。有一些会先到达,有一些会后到达。
因此,若是有一些配件先到达的时候,咱们就须要继续等到后到达的配件。
若是咱们组装一个电脑须要100个配件,其中99个已经到达了,可是最后一个因为库存缘由还未发货,那么,总体电脑组装的进度应该就是99%,而且这个99%的状态还会维持很长一段时间。
因此,由于采用P2P的下载方式,文件从多个节点下载,因为从各个节点下载的速度不一致,有些节点的资源会相较于其余资源慢一些,就会出现进度卡在99%的状况。
另外,除了以上这种缘由之外,还有一种状况。
那就是咱们已经收到了全部的电脑配件,开始组装的时候,发现其中有一个配件出现了问题,运输过程当中有损坏,这时候咱们就须要联系商家进行换货。这个过程电脑组装的总体进度也会卡在99%。
因此,由于资源进行分块下载,在下载的最后阶段,就须要进行组合及校验,而在校验时发现某块出现问题,就须要从新下载。这个过程进度也会一直卡在99%。