Frage

Ich mag den sperrfreien Betrieb des Concurrentdiktionary und verwenden Sie es inzwei Objekte: generasacodicetagpre.

Diese beiden Objekte müssen synchron bleiben.Dies ist der einzige Weg, dies zu tun, ist, ein Schloss zu verwenden, wodurch alle Vorteile des gleichzeitigen Wörterbuchs vermieden werden?

War es hilfreich?

Lösung

Ich würde eine benutzerdefinierte Klasse mit 2 Wörterbüchern erstellen und eine Sperre nur auf den Methoden verwenden, die anfällig sind, um das Wörterbuch zu ändern (Hinzufügen, Löschen).

Sie verlieren nicht die Vorteile des gleichzeitigen Wörterbuchs, da diese Methode wesentlich weniger Code erfordern, als das Normal-Wörterbuch verwenden müssten.

Andere Tipps

Concurrentdiktionär ist nur in einer bestimmten Instanz "Thread-Safe" zu den Operationen.z.B.Während ein ConcurrentdiTionary.RyAdd () aufgerufen wird, können keine anderen Threads die Sammlung ändern ...

Das bedeutet nicht, dass, während Sie einen Wert aus einem Wörterbuch erhalten haben, und fügen Sie es in ein anderes Wörterbuch hinzu, das der Wert noch im Originalwörterbuch existiert, während Sie es dem zweiten hinzufügen.

Sie haben wahrscheinlich ein Invariante, dass Details, dass ein Wert von einem Wörterbuch mit dem anderen einen Wert bewegt, keine Werte im ursprünglichen Wörterbuch entfernt werden können (oder zumindest diesen -wert, aber das ist jedochetwas schwieriger, mit Conncurrentciktionär zu garantieren.

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