Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#1

Thread-sicheres dekrementieren einer Variable (SyncObjs)

  Alt 27. Dez 2016, 14:07
In der Unit SyncObjs gibt es ein paar schöne Funktionen, um thread-sicher Variablen hochzuzählen.
Es gibt auch eine um den Wert zu dekrementieren - aber immer nur um den Wert 1. Etwas wie Dec(MeinInt, 100) scheint es nicht zu geben.

Daher meine Idee TInterLocked.Add zu verwenden. In etwa so
Delphi-Quellcode:
var
 i, j: Integer;
begin
 i := 100;
 j := 2;

 TInterLocked.Add(i, j); // => 102
 TInterLocked.Add(i, (j)*-1); // => 99
Ist das so noch halbwegs korrekt und anwendbar oder ist das nicht in Ordnung?
Etwas anderes kann ich leider nicht machen. Es gibt zwar wie gesagt TInterLocked.Decrement, aber dort kann ich keinen zweiten Parameter angeben.

Geändert von a.def (27. Dez 2016 um 14:09 Uhr)
  Mit Zitat antworten Zitat