Макс задач в TPL? - PullRequest
       39

Макс задач в TPL?

6 голосов
/ 19 января 2011

Я хочу использовать TPL в рабочем процессе в Windows Azure.Я ищу, чтобы добавить IJob в очередь, у него есть метод Run, поэтому рабочий будет состоять из:

loop, получить элемент из очереди. Используйте TPL для вызова IJob.Run, это асинхронный вызов * 1003.*

Но я немного обеспокоен максимальным количеством пунктов, которые я могу добавить в TPL?Я счастлив создать свой собственный TPL Pool, если нужно, просто проверяя его возможности.

Приветствия, Эш.

1 Ответ

10 голосов
/ 19 января 2011

Одной из основных целей TPL является устранение необходимости беспокоиться об этом.Разлагая вашу работу на Задачи вместо Потоков, вы позволяете планировщику обрабатывать балансировку более соответствующим образом.

Не существует фиксированного верхнего предела для количества «задач», которые вы можете запланировать.Они (по умолчанию, с TaskScheduler по умолчанию) запланированы с использованием ThreadPool, который начиная с .NET 4 масштабируется в зависимости от работы.Я настоятельно рекомендую не пытаться создать свой собственный пул - очень маловероятно, что вы будете лучше, чем по умолчанию.При этом, если ваши задачи имеют очень нестандартное поведение, вы можете подумать о написании пользовательского TaskScheduler.

Кроме того - осознайте, что в идеале вы должны сделать свои задачи как можно более большими.С отдельной задачей связаны накладные расходы - слишком малое (с точки зрения работы) их выполнение приведет к большему влиянию на производительность, чем при наличии соответствующего количества более крупных «задач».

...