最受推荐的.NET自定义线程池有哪些独立实例,即每个应用程序有多个线程池? 我需要一个无限制的队列大小(构建一个爬行器),并且需要为我正在爬取的每个站点并行运行一个单独的线程池。具有单独实例的.NET自定义线程池
编辑: 我需要尽快挖掘这些网站的信息,每个网站使用单独的线程池将使我能够控制在任何给定时间在每个网站上工作的线程数量。 (不超过2-3)
感谢 Roey
最受推荐的.NET自定义线程池有哪些独立实例,即每个应用程序有多个线程池? 我需要一个无限制的队列大小(构建一个爬行器),并且需要为我正在爬取的每个站点并行运行一个单独的线程池。具有单独实例的.NET自定义线程池
编辑: 我需要尽快挖掘这些网站的信息,每个网站使用单独的线程池将使我能够控制在任何给定时间在每个网站上工作的线程数量。 (不超过2-3)
感谢 Roey
问乔恩斯基特:http://www.yoda.arachsys.com/csharp/miscutil/
Parallel extensions for .Net (TPL)应实际工作更好,如果你想有一个大量的并行运行的任务。
我相信Smart Thread Pool可以做到这一点。它的ThreadPool类被实例化,所以你应该能够根据你的需要创建和管理你的单独的站点特定的实例。
Ami酒吧写了一个很好的智能线程池,可以实例化。
看看这里here
这个免费的NuGet库:CodeFluentRuntimeClient有CustomThreadPool类,您可以重复使用。它非常易于配置,您可以更改池线程优先级,编号,COM公寓状态,甚至名称(用于调试)以及文化。
为什么你需要为每个站点运行一个单独的线程池? – AnthonyWJones 2009-06-23 10:35:14
花点时间看这丹尼尔蛾的视频:http://channel9.msdn.com/pdc2008/TL26/。你会发现无限的队列并不是无限的表现之路。 – Groo 2009-06-23 10:45:48
我同意安东尼。我不认为你需要多个线程池。线程池用于管理和平衡整个系统的工作。如果你有多个池,你最终会超载你的机器。不要忘记有线程创建的开销。这就是线程池的作用 - 它仔细管理线程的数量以达到最佳数量,并将工作分配到这些线程中。 – 2009-06-23 10:47:50