TPL - 如何强制TPL使用固定的#个线程?不低于

时间:2011-03-08 17:00:29

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

如何强制TPL使用固定数量的线程?我知道MaxDegreeOfParallelism可用于设置上限,但我希望上限等于下限。这可能吗?怎么样?

因为我知道有人会问=)是的,我确定我想这样做,是的,这对我的scneario是最佳的。 =)

修改
该解决方案需要自定义分区程序以及自定义TaskScheduler http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/002ff888-6e13-4d7e-a234-1632e8a1f551

2 个答案:

答案 0 :(得分:6)

如果您真的需要,可以创建自己的TaskScheduler,但使用TaskCreationOptions.LongRunning可能是最好的方法。

How to: Create a Task Scheduler That Limits the Degree of Concurrency

答案 1 :(得分:4)

创建任务时是否尝试过使用TaskCreationOptions.LongRunning?它只是一个暗示,但我相信它可能会有所帮助:

  

指定任务将是长时间运行的粗粒度操作。它向TaskScheduler提供了一个提示,即可以保证超额认购。

可能会超出超出 MaxDegreeOfParallelism当然......你应该尝试找到一个详细解释它的资源。顺便说一句,你是如何创建任务的呢?