我有一个关于多线程下载的问题,正如您所知,使用多个线程进行下载可以提高应用程序的性能,但是有一些值得尊重的措施:例如线程数,可用带宽等等,但是我并不十分了解,为什么例如,使用多个线程可能会降低应用程序的性能,或者服务器的带宽,质量如何影响多线程应用程序的性能?,在什么情况下单线程下载比多线程快?
多谢您的回覆。
我认为您指的是下载管理器。
首先,我对下载管理器真正提供多少“性能”表示怀疑。但更重要的是,他们不提供任何的好处是不是因为多线程。下载的性能限制是连接的带宽。这就是为什么我对收益表示怀疑的原因:
下载管理器的真正好处是可以有效地自动重新启动下载(即,如果可能的话,不从头开始重新启动)。
让我们首先消除一个神话:多线程并不能加快任何速度。如果一个例程需要运行X个时钟周期:它将花费X个时钟周期;无论是1个线程还是多个线程。
多线程的作用是:它允许任务同时(同时)运行。
能够同时做不同的事情意味着:
好吧,几乎总是在CPU不是瓶颈的情况下。对于下载:如前所述,瓶颈是连接的两个端点之间的带宽。实际上,许多线程意味着您必须做更多的工作(管理和协调不同的线程)。
下载的最有效方法是2个线程:一个用于UI,另一个用于下载,这样任何暂停/执行都不会使用户界面停滞。
但是,更一般而言,即使您具有CPU密集型工作,理论上可以从多个线程同时执行不同工作中受益,也很容易在实现中犯错误,而这实际上会使您的应用程序变慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句