Saf*_*afa 5 multithreading download
我有一个关于多线程下载的问题,因为你知道使用多个线程下载可以提高应用程序的性能,但是有一些措施要尊重:比如线程数,可用带宽等等,但我真的不明白,为什么例如,使用多个线程可能会降低应用程序的性能,或者服务器的带宽,质量如何影响多线程应用程序的性能?,monothread下载比多线程更快的情况是什么?
谢谢你的回复.
Dis*_*ned 10
我假设您指的是下载管理器.
首先,我怀疑下载管理器真正提供了多少"性能"好处.但更重要的是,他们不提供任何的好处是不是因为多线程.下载的性能约束是连接的带宽.这就是为什么我对这些好处持怀疑态度:
下载管理器的真正好处在于有效地自动重启下载(即如果可能,不从头开始重新启动).
让我们首先消除一个神话:多线程不会加速任何事情.如果例程需要运行X个时钟周期:它将需要X个时钟周期; 无论是1个线程还是多个线程.
什么多线程不会做的事:它允许任务运行的同时(同时).
同时做不同事情的能力意味着:
好吧,几乎总是在CPU不是瓶颈的情况下.在下载的情况下:如前所述,瓶颈是连接的两个端点之间的带宽.许多线程实际上意味着你必须做更多的工作(管理和协调不同的线程).
最有效的下载方法是2个线程:一个用于UI,另一个用于下载,因此任何暂停/ dealys都不会停止用户界面.
但是,更一般地说,即使你有CPU密集型工作理论上可以从多个线程同时执行不同工作中受益,但实际上很容易在实现中出错,这实际上会降低应用程序的速度.