Макс задач в TPL?
Я хочу использовать TPL в рабочем процессе в Windows Azure. Я ищу, чтобы добавить IJob очередь, это имеет метод Run, поэтому рабочий будет состоять из:
цикл получить элемент из очереди Используйте TPL для вызова IJob.Run, это асинхронный вызов
Но я немного обеспокоен максимальным количеством пунктов, которые я могу добавить в TPL? Я счастлив создать свой собственный TPL Pool, если нужно, просто проверяя его возможности.
Ура, Эш.
1 ответ
Одной из основных целей TPL является устранение необходимости беспокоиться об этом. Разлагая свою работу на Задачи вместо Потоков, вы позволяете планировщику обрабатывать балансировку более подходящим образом.
Не существует фиксированного верхнего предела для количества "задач", которые вы можете запланировать. Они (по умолчанию, с TaskScheduler по умолчанию) запланированы с использованием ThreadPool, который начиная с.NET 4 масштабируется в зависимости от работы. Я настоятельно рекомендую не пытаться создать свой собственный пул - очень маловероятно, что вы будете лучше, чем по умолчанию. При этом, если ваши задачи имеют очень нестандартное поведение, вы можете рассмотреть возможность написания пользовательского TaskScheduler.
Также - осознайте, что в идеале вы должны сделать свои задачи как можно более крупными. С отдельной задачей связаны накладные расходы - слишком малое (с точки зрения работы) их выполнение приведет к большему влиянию на производительность, чем при наличии соответствующего количества более крупных "задач".