Hallo zusammen,
ich benutze die Atomic.... Threadsafe Funktionen seit geraumer Zeit, und bin damit hochzufrieden.
Allerdings benutze ich diese, mangels entsprechender Funktionen, teilweise etwas "abgewandelt".
Ich würde gerne mal eure Meinungen dazu hören, ob es damit evtl. irgendwelche Seiteneffekte, oder Probleme geben könnte.
AtomicIncrement() als Getter
Delphi-Quellcode:
LTempCopy := AtomicIncrement( FVariable, 0); // "DONT Inc" and Get threadSafe
if LTempCopy = xyz then
...
Das Konstrukt scheint gut zu funktionieren, es holte den aktuellen Wert von FVariable threadsafe, und legt eine temporäre Kopie davon 1:1 an,
mit der ich dann normal weiterarbeiten kann.
AtomicIncrement() als Resetter
Delphi-Quellcode:
LTempCopy := AtomicIncrement( FVariable, 0); // "DONT Inc" and Get threadSafe
AtomicDecrement( FVariable, -LTempCopy ); // Set Zero threadSafe
Auch
dieses Konstrukt scheint problemlos zu Laufen, und ich habe bisher keine Probleme damit.
Könnten diese beiden Konstrukte oben an irgendeiner Stelle Probleme machen,
z.B.
Überläufe von Variablen,
irgendwelche Seiteneffekte, o.ä
oder kann ich denen weiterhin blind vertrauen ?
Ich wäre erfreut eure Meinungen und Erfahrungen dazu zu lesen.
Rollo