Can Parallel.Foreach можно безопасно использовать с CloudTableQuery

StackOverflow https://stackoverflow.com/questions/3664083

Вопрос

У меня есть разумное количество записей в таблице Azure, которую я пытаюсь сделать одно время шифрование данных. Я думал, что я могу ускорить вещи, используя Parallel.ForEach. Отказ Также потому, что есть более 1 тысяч записей, и я не хочу беспокоиться с продолжением токенов, я использую CloudTableQuery, чтобы получить мой перечислетель.

Моя проблема заключается в том, что некоторые из моих записей были двойными зашифрованы, и я понял, что я не уверен, как поток безопасен, перечислетель возвращается CloudTableQuery.Execute() является. У кого-нибудь еще есть какой-то опыт с этой комбинацией?

Это было полезно?

Решение 2

Несмотря на мои лучшие усилия, я не смогли реплицировать мою первоначальную проблему. Поэтому мой вывод, что это совершенно нормально для использования Parallel.ForEach петли с CloudTableQuery.Execute().

Другие советы

Я был бы готов побить ответ на выполнение возврата потока IEnumerator Реализация крайне вряд ли. Что сказал, это звучит как еще один случай для Производитель-потребительский узор.

В вашем конкретном сценарии у меня будет оригинальная тема, которая называется выполнение, прочитайте результаты. BlockingCollection<T>. Отказ Прежде чем начать это, хотя, вы хотите начать отдельный Task это будет контролировать потребление этих предметов, использующих Parallel::ForEach. Отказ Теперь вы, вероятно, также захотите посмотреть на использование GetConsumingPartitioner Метод библиотеки параллельной технике, чтобы быть наиболее эффективным, поскольку парикмахера по умолчанию создаст больше накладных расходов, чем вы хотите в этом случае. Вы можете прочитать больше об этом из этот блог пост.

Дополнительный бонус использования BlockingCollection<T> над сырой ConcurrentQueueu<T> это то, что он предлагает способность установить границы Что может помочь заблокировать производителя от добавления большего количества предметов в коллекцию, чем потребители могут идти в ногу с. Вы, конечно, должны выполнить тестирование производительности, чтобы найти сладкое место для вашего приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top