Wohldefiniert und simpel implemenitiert wäre es in deinem Fall, die Collection zu sperren.
Als Lösung für konsistente gleichzeitige Zugriffe fallen mir nur Transaktionen ein.
Dumm ist nur, dass dir das tierisch Performance kosten kann. Falls es viele Daten werden willst du ja ganz bestimmt keine Copy im Speicher halten. Jage mich mit Bennenungen für allgemeine Patterns, aber eine Art "copy on write demand" wäre hier vielleicht möglich.
Du könntest jedem Zugriff eine Transaktion verpassen, solange nichts geändert wurde wird sie mit einem einfachen Zeiger auf die bestehenden Daten arbeiten. Bei einer Änderung müsstest du die Daten des betroffenen Segmentes kopieren und fortan wird eine Abfrage auf das Segment mit deiner Transaktionsnummer die Kopie zeigen. Wie fein du deine Daten in einzelne Segmente einteilst musst du austesten, aber wenn es viele Daten werden sollte die Aufteilung nicht zu klein werden. Sonst würden die die ständigen Abfragen die Zyklen wegfressen...
Ich hoffe ich konnte mich in der Kürze irgendwie verständich machen...
Da ich gerade in einer bösen Server Validierung stecke komme ich wohl in den nächsten Stunden nicht mehr zu einer größeren "
DP Pause".
Mit etwas Glück, habe ich dich falsch verstanden...