我有一个关于多线程下载的问题,你知道使用多线程下载可以提高应用程序的性能,但是有一些指标需要考虑:比如线程的数量,可用的带宽等等,但是我不是很理解,为什么应用程序的性能会因为使用多个线程而降低,或者服务器的带宽和质量会如何影响多线程应用程序的性能?单线程下载比多线程下载快的情况是什么情况?
感谢您的回复。
发布于 2014-06-07 04:20:57
我猜你指的是下载管理器。
首先,我怀疑下载管理器到底能提供多少“性能”上的好处。但更重要的是,由于多线程,它们提供的任何好处都是而不是。下载的性能约束是连接的带宽。这就是为什么我对它的好处持怀疑态度:
下载管理器的真正好处是自动高效地重新启动下载(即,如果可能的话,不会从头开始)。
那么多线程的意义是什么呢?
让我们首先破除一个误区:多线程不会任何东西的速度。如果一个例程需要X个时钟周期才能运行:它将需要X个时钟周期;无论是在一个线程上还是在多个线程上。
多线程的作用:它允许任务并发(同时)运行。
同时做不同事情的能力意味着:
用户interface).
什么时候单线程比多线程快?
嗯,在CPU不是瓶颈的情况下,几乎总是如此。在下载的情况下:如前所述,瓶颈是连接的两个端点之间的带宽。许多线程实际上意味着你必须做更多的工作(管理和协调不同的线程)。
最有效的下载方法是两个线程:一个用于UI,另一个用于下载,这样任何暂停/终止都不会停止用户界面。
然而,更普遍的情况是,即使您的CPU密集型工作理论上可以受益于多个线程同时执行不同的工作,但很容易在实现中犯错误,实际上会减慢您的应用程序的。
的
发布于 2019-11-17 16:13:52
首先,多线程下载所做的是,它创建多个线程,这些线程从不同的起始位置下载文件,这试图利用您的互联网连接的最大能力。(这将在多核处理器情况下快速下载,如下所述)。
我们可能觉得线程是并行运行的,但实际上,它们应该是依次运行的。例如,线程t1运行0.25秒,然后线程t2运行0.241秒,然后是t1,..,t2,,t1。因此,它们共享CPU突发。
请看这张拥有双核处理器的图片,以及线程是如何管理的。

我希望这能有所帮助!:-)
https://stackoverflow.com/questions/24087560
复制相似问题