welche Techniken sollten Griff Objekte in asp.net Cache verwendet werden, um Probleme von mehreren asp.net Worker-Threads Zugriff zu verhindern?

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

Frage

da asp.net mehrere Threads enthalten, die zur gleichen Zeit ausgeführt werden.
so dass, wenn zwei Threads ein Objekt (einfach oder komplex) zugreifen, die ich bekam von der der asp.net Cache Httpcontext.
nicht diese führt zu staatlichen Problemen auf diesem Objekt kann, wenn diese zwei theads versucht, es zur gleichen Zeit zu ändern / lesen?
so was für Vorsichtsmaßnahmen sollte ich implementieren?
zum Beispiel denke ich vielleicht das Objekt Sperren während der Arbeit mit ihm? (Wont diese Ursache Performance-Probleme?)
oder vielleicht, wenn ich einen Gegenstand aus dem Cache abrufen soll ich eine Kopie davon erstellen?
oder vielleicht nicht, dass ich Grund zur Sorge über dieses Thema überhaupt?
Dank

War es hilfreich?

Lösung

Sie müssen dies auf dem Hintergrund des Problems basiert, zu entscheiden, ein one size fits all-Lösung wird hier nicht funktionieren. Wenn Sie nur Daten lesen, dann werden Sie keine Threading Probleme haben. Wenn Sie Daten auf diese häufig schreiben, mit seinem sinnlosen dem Cache. Wenn es ein bisschen eine Mischung und Caching-Hilfe mit Leistung tut etc, dann müssen Sie entweder den normalen Fadensynchronisationstechniken zurückgreifen (z Leser-Schreiber-Sperren) oder vielleicht Ihr Objekt unveränderlich machen, wo Änderungen an Ihrem Objekt immer ein neues Objekt erstellen. Diese Wahl führt eigene Probleme wie das neue Objekt Einfädeln muss dann das alte Objekt im Cache ersetzen.

Andere Tipps

5 + Jahren ASP.NET Entwicklungsprojekte, habe ich noch nie eine Situation kommen, wo dies war eine Sorge.

That being said ... Sie sicher gehen, um kein Problem haben, Lesen alle Elemente. Wenn Sie ein Objekt haben, dass Sie oft ändern möchten, warum es in den Cache zu beginnen? Wenn Sie nicht brauchen, ist es oft zu ändern, dann das Objekt Sperren nicht ein Performance-Problem sein.

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