如何强制TPL使用固定数量的线程?我知道MaxDegreeOfParallelism可用于设置上限,但我希望上限等于下限。这可能吗?怎么样?
因为我知道有人会问=)是的,我确定我想这样做,是的,这对我的scneario是最佳的。 =)
修改的
该解决方案需要自定义分区程序以及自定义TaskScheduler http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/002ff888-6e13-4d7e-a234-1632e8a1f551
答案 0 :(得分:6)
如果您真的需要,可以创建自己的TaskScheduler,但使用TaskCreationOptions.LongRunning可能是最好的方法。
How to: Create a Task Scheduler That Limits the Degree of Concurrency
答案 1 :(得分:4)
创建任务时是否尝试过使用TaskCreationOptions.LongRunning
?它只是一个暗示,但我相信它可能会有所帮助:
指定任务将是长时间运行的粗粒度操作。它向TaskScheduler提供了一个提示,即可以保证超额认购。
可能会超出超出 MaxDegreeOfParallelism当然......你应该尝试找到一个详细解释它的资源。顺便说一句,你是如何创建任务的呢?