开发者

TPL - How can I force TPL to use fixed # of threads? not less

How can I force TPL to use a fixed number of threads? I know MaxDegreeOfParallelism can be used to set the upper limit, but I want the upper limit to equal the lower limit. Is this possible? How?

Because I know someone will ask =) yes, I'm sure I want to do this an开发者_JAVA百科d yes its optimal for my scneario. =)

EDIT

The solution requires a custom Partitioner as well as the custom TaskScheduler http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/002ff888-6e13-4d7e-a234-1632e8a1f551


You could create your own TaskScheduler if you really needed to, but using TaskCreationOptions.LongRunning is probably the best approach.

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


Have you tried using TaskCreationOptions.LongRunning when creating the tasks? It's only a hint, but I believe it may help:

Specifies that a task will be a long-running, coarse-grained operation. It provides a hint to the TaskScheduler that oversubscription may be warranted.

It's possible that that will oversubscribe it beyond MaxDegreeOfParallelism of course... you should probably try to find a resource which explains it in detail. How are you creating your tasks, by the way?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜