Frage

Ich habe eine angemessene Anzahl von Datensätzen in einer Azure Tabelle, dass ich versuchen, auf eine einmal die Datenverschlüsselung zu tun. Ich dachte, dass ich die Dinge beschleunigen könnte Parallel.ForEach unter Verwendung. Auch, weil es mehr als 1 K Aufzeichnungen und ich mag nicht herum zu verwirren mit Fortsetzungstoken selbst ich bin mit einem CloudTableQuery meinen enumerator zu erhalten.

Mein Problem ist, dass einige meiner Aufzeichnungen doppelt verschlüsselt wurden, und ich erkannte, dass ich bin mir nicht sicher, wie die Threadsicherheit der Enumerator von CloudTableQuery.Execute() zurückgekehrt ist. Hat sonst noch jemand da draußen mit dieser Kombination keine Erfahrungen?

War es hilfreich?

Lösung 2

Trotz meiner Bemühungen Ich habe nicht in der Lage gewesen, mein ursprüngliches Problem zu replizieren. Meine Schlussfolgerung ist daher, dass es vollkommen in Ordnung ist Parallel.ForEach Schleifen mit CloudTableQuery.Execute() zu verwenden.

Andere Tipps

wäre ich bereit, die Antwort zu wetten auf Execute eine Thread-sichere IEnumerator Implementierung Rückkehr ist höchst unwahrscheinlich. Das heißt, das klingt wie ein weiterer Fall für die Erzeuger-Verbraucher-Muster .

In Ihrem speziellen Szenario würde ich den ursprünglichen Thread hat, die nacheinander und so nannte sie in ein BlockingCollection<T> . Bevor Sie, dass, obwohl tun beginnen, möchten Sie eine separate Task starten, die den Verbrauch dieser Elemente mit Parallel::ForEach kontrollieren. Jetzt werden Sie wollen wahrscheinlich auch in mit der GetConsumingPartitioner Methode der ParallelExtensions Bibliothek suchen, um am effizientesten zu sein, da die Standard-Partitionierungs mehr schaffen werden Overhead, als Sie in diesem Fall möchten. Sie können mehr über diese von dieses Blog-Post lesen .

Ein zusätzlicher Bonus BlockingCollection<T> über einen rohen ConcurrentQueueu<T> der Verwendung ist, dass es die Fähigkeit, set Grenzen , die die Produzenten blockieren helfen können weitere Elemente in der Sammlung aus der Addition als die Verbraucher Schritt halten können. Sie werden natürlich müssen einige Performance zu tun, die Prüfung der Sweet-Spot für Ihre Anwendung zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top