![]() |
Thread-sicheres dekrementieren einer Variable (SyncObjs)
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:
Ist das so noch halbwegs korrekt und anwendbar oder ist das nicht in Ordnung?
var
i, j: Integer; begin i := 100; j := 2; TInterLocked.Add(i, j); // => 102 TInterLocked.Add(i, (j)*-1); // => 99 Etwas anderes kann ich leider nicht machen. Es gibt zwar wie gesagt TInterLocked.Decrement, aber dort kann ich keinen zweiten Parameter angeben. |
AW: Thread-sicheres dekrementieren einer Variable (SyncObjs)
Das ist vollkommen in Ordnung so. Wenn du mal in die Implementation von
Delphi-Quellcode:
oder
TInterlocked.Increment
Delphi-Quellcode:
schaust, dann findest du dort auch nur einen Aufruf von
TInterlocked.Decrement
Delphi-Quellcode:
.
Add
|
AW: Thread-sicheres dekrementieren einer Variable (SyncObjs)
Ok gut zu wissen, danke.
Ich hatte schon Angst, dass Antworten kommen wie "Was machst du wenn..." (Bsp.: wenn i ins Negative geht) Aber das kann bei Dec() ja genau so passieren was es oft sogar soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz