выделить больше потоков для каждой задачи - PullRequest
1 голос
/ 06 апреля 2011

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

Теперь я вижу, что мое приложение использует максимум 14 потоков, а процессор использует максимум 13% (core i7).

А во-вторых, как я могу проверить, сколько потоков указано для задачи?

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Существует встроенная точка расширения, которая называется TaskScheduler.В планировщике задач по умолчанию используются потоки пула потоков .NET и несколько эвристик для определения оптимального количества потоков, которое будет использоваться для обработки задач, поставленных в очередь до него. Дополнительная информация о реализации по умолчанию доступна здесь, в MSDN (см. Раздел под названием Планировщик заданий по умолчанию ).

Если вы создаете собственную реализацию TaskScheduler, вы можететочно контролировать, сколько потоков вы хотите выделить, когда они распределены, на каких ядрах и т. д. Здесь приведен пример MSDN , как это сделать, но вы найдете более полный и разнообразный пример.реализации в Parallel Extensions Xtras .

При всем этом я был бы удивлен, если бы вы смогли превзойти реализацию по умолчанию.Если вы выполняете какой-либо ввод-вывод, убедитесь, что вы полностью используете API-интерфейсы асинхронного ввода-вывода APM с Task.FromAsync.

0 голосов
/ 31 мая 2011

В зависимости от того, как вы используете TPL, вы можете создавать задачи с помощью TaskCreationOptions.LongRunning или, возможно, указать MaxDegreeOfParallelism в ParallelismOptions, если вы используете что-то вроде Parallel.For.

См. Этот вопрос для дополнительных ссылок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...