加速从互联网上下载网页

时间:2013-10-12 15:32:53

标签: c# .net multithreading task-parallel-library

所以我的一个应用程序从互联网上下载网页。目前我正在使用多个(5)线程来加速网页的下载

for (int i = 0; i < th; i++)
{
    Thread thread = new Thread(start);
    thread.Start()
}

start函数中,我按HtttpWebRequestWebResponse组合下载网页。有什么方法可以加快这个过程。

我正在考虑使用Tasks而不是线程。它是否会导致任何有意义的速度提升,甚至导致我的PC的资源使用量减少。

非常感谢这里的一些指导。

2 个答案:

答案 0 :(得分:0)

来自MSDN

  

在幕后,任务排队到ThreadPool,一直是   通过确定和调整数量的算法进行增强   线程并提供负载平衡以最大化吞吐量。这个   使任务相对轻量级,你可以创建它们中的许多   实现细粒度的并行性。

换句话说,使用Tasks很可能会更高效,因为它使用池化线程而不是创建新线程,并且可以自动确定要创建的线程数量,具体取决于它运行的系统 - 5可能不会是所有系统上的最佳线程数。

值得注意的是,默认情况下,只允许两个并发HTTP请求。要增加此值,您需要在发起请求之前更改ServicePointManager.DefaultConnectionLimit的值。

答案 1 :(得分:0)

直接在Task上使用Thread可能会让您的代码更容易编写,理解和使用。它不太可能有任何有意义的性能差异,特别是在这样的上下文中。

默认情况下,新任务将使用线程池,并且使用线程池与常规任务之间存在一些性能差异,但鉴于您的任务数量很少且长时间运行,这些差异不会很大在这种情况下的因素。

相关问题