TPL - Как я могу заставить TPL использовать фиксированное количество потоков?не менее - PullRequest
5 голосов
/ 08 марта 2011

Как я могу заставить TPL использовать фиксированное количество потоков?Я знаю, что MaxDegreeOfParallelism можно использовать для установки верхнего предела, но я хочу, чтобы верхний предел равнялся нижнему пределу.Это возможно?Как?

Потому что я знаю, что кто-то спросит =) да, я уверен, что хочу это сделать, и да, это оптимально для моего scneario.=)

РЕДАКТИРОВАТЬ
Для решения требуется пользовательский Partitioner, а также пользовательский TaskScheduler http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/002ff888-6e13-4d7e-a234-1632e8a1f551

Ответы [ 2 ]

6 голосов
/ 08 марта 2011

Вы можете создать свой собственный TaskScheduler , если вам действительно это нужно, но лучше всего использовать TaskCreationOptions.LongRunning.

Как: создать планировщик задач, который ограничиваетСтепень параллелизма

4 голосов
/ 08 марта 2011

Вы пытались использовать TaskCreationOptions.LongRunning при создании задач?Это только подсказка, но я верю, что это может помочь:

Указывает, что задача будет длительной, грубой операцией.Он дает подсказку TaskScheduler, что переподписка может быть гарантирована.

Возможно, это перепишет его за пределами MaxDegreeOfParallelism, конечно ... вам, вероятно, следует попытаться найти ресурсчто объясняет это подробно.Кстати, как вы создаете свои задачи?

...