为IO绑定任务创建的最佳线程数是多少?

时间:2017-02-22 08:57:22

标签: multithreading io

我想下载一堆微小的MP3文件,将它们合并在一起。我想知道,如果拥有一个具有四个内核的CPU,创建多个线程将会缩短下载所有文件所需的时间。如何确定要创建的最佳线程数?无论如何它会有帮助吗?

1 个答案:

答案 0 :(得分:1)

严重编辑,请参阅评论原因)

是的,这会有所帮助。但是,瓶颈更可能是文件的来源。我假设您的数据将全部托管在一个来源上,用于本答复的其余部分。

具有更多多线程经验的人可能会对线程与核心有更好的输入,但我不确定它是否重要。

您可能需要进行一些实验才能找到最合适的产品,但这取决于很多因素,例如带宽,服务器配置,源服务器数量以及使用该应用的人数同时访问这些文件(假设它不仅仅是你)。

根据我所做的假设,我会说3-6将是神奇的数字。以下是我对以下原因的看法:

  • 如果您运行的内容超过了,那么下载很可能会放慢速度。
  • 因为我们正在谈论较小的文件,所以很多开销将用于启动和停止传输。
  • 如果它是大文件,我会说3开始,但由于上面提到的开销,你可能想加倍。
  • 正如评论中所提到的,你的线程将会有很多低CPU使用率的时期,因此带宽和服务器的瓶颈比CPU内核的数量更有可能重要。