была соответствующая операция

я есть список объектов, которые необходимо обработать. Итак, скажем, что список - это список всех клиентов, и мне нужно выполнить интенсивную загрузку процессора для всех них. Хотя до и после этого вычисления мне нужно извлекать и фиксировать данные обратно в базу данных, так что это не просто задача процессора.

так что я делаю

Parallel.ForEach(list, action);

Где Действие буквально

1 Fetch customer data
2 Process calculate (time and memory intensive task)
3 Commit back customer data

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

Так есть ли способ сбалансировать нагрузку это? Большинство клиентов обрабатываются быстро, но мало кто забирает все ресурсы. Могу ли я избежать нескольких из них, бегущих вместе?

Один из способов реализовать это - отсортировать список по размеру, а затем попытаться выбрать первый и последний элемент и самостоятельно управлять параллелизмом, но при этом посмотреть, какие варианты у меня есть.

Ответы на вопрос(1)

Ваш ответ на вопрос