Servus zusammen,
ich versuche eine Möglichkeit zu finden, einen WriteLock zu bekommen, nachdem der ReadLock gelöst wurde, ohne dass ein andere Thread die Möglichkeit hat, dazwischen Schreibzugriffe zu tätigen.
Konkret: Zum Sortieren eines großen Arrays soll dieses aus performance-Gründen kopiert werden, damit das Original während des Sortiervorgangs weiter gelesen werden kann (CopyOnWrite). Das Kopieren und Sortieren bekommt also einen ReadLock, es darf währenddessen ja nicht modifiziert werden. Wenn ich jetzt das Original durch die sortierte Kopie ersetzten will, benötige ich den WriteLock. Wie kann ich jetzt sicherstellen, dass zwischen dem Lösen des ReadLocks und setzten des WriteLocks kein andere WriteLock zuvorkommt? (War das verständlich? Wenn dazwischen eine Änderung am Array vorgenommen wird, würde diese ja sonst verworfen werden...) Danke schon einmal für eure Hilfe
Ich wünsche ein schönes Restwochenende und einen angenehmen Wochenstart. Schöne Grüße,
Cymatoxa
ich versuche eine Möglichkeit zu finden, einen WriteLock zu bekommen, nachdem der ReadLock gelöst wurde, ohne dass ein andere Thread die Möglichkeit hat, dazwischen Schreibzugriffe zu tätigen.
Konkret: Zum Sortieren eines großen Arrays soll dieses aus performance-Gründen kopiert werden, damit das Original während des Sortiervorgangs weiter gelesen werden kann (CopyOnWrite). Das Kopieren und Sortieren bekommt also einen ReadLock, es darf währenddessen ja nicht modifiziert werden. Wenn ich jetzt das Original durch die sortierte Kopie ersetzten will, benötige ich den WriteLock. Wie kann ich jetzt sicherstellen, dass zwischen dem Lösen des ReadLocks und setzten des WriteLocks kein andere WriteLock zuvorkommt? (War das verständlich? Wenn dazwischen eine Änderung am Array vorgenommen wird, würde diese ja sonst verworfen werden...) Danke schon einmal für eure Hilfe

Ich wünsche ein schönes Restwochenende und einen angenehmen Wochenstart. Schöne Grüße,
Cymatoxa