寻找.NET 4 ThreadPool

时间:2011-04-04 12:17:07

标签: c# multithreading .net-4.0 threadpool

我正在寻找一个好的ThreadPool实现。我知道.NET ThreadPool已在.NET 4中被重写/改进,但我怀疑它是否符合我的需要。

我有不同数量的任务必须并行执行。我希望能够控制处理这些任务的最大线程数,并且如果可能的话,能够优先处理任务。应该处理空闲线程,并在必要时创建新线程,直到达到指定的最小/最大值。

据我了解,我无法控制.NET ThreadPool使用处理我的任务的线程数(不想影响其余部分)应用程序,即代理),我不能指定一些线程只处理我的任务。

所以我的问题是:

  • 有没有办法在我的场景中使用.NET ThreadPool?
  • 如果没有,我应该看看哪个好的(最好是免费的)ThreadPool实现? (.NET Framework 4和Windows Azure兼容)

编辑: 根据要求添加了不同数量的线程。

4 个答案:

答案 0 :(得分:2)

我认为您正在寻找System.Threading.Tasks.Task类。简化,就像使用ThreadPool一样,但是它会返回任务,它具有与Threads类似的API。不要认为你可以优先考虑任务,但你确实说你想并行运行东西。

答案 1 :(得分:2)

你应该看看那个图书馆。

http://smartthreadpool.codeplex.com/

答案 2 :(得分:1)

ThreadPool的实施之美是通过增加/减少池大小来响应池负载的能力。

如果您没有这样的要求(固定数量的线程适合您),那么您可能不需要精心设计的线程池。所以你可能需要一个简单的类来抽象创建和管理线程。

答案 3 :(得分:1)

也许Partitioner可以帮助你?

有关如何使用它的更多信息可以在Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4

中找到