Zitat:
Dann würde ich ebenfalls eine Klasse daraus machen (geht aber auch als Record) und Setter benutzen (inline deklarieren wegen der Performance), die sich dann um die Locks kümmern.
Ist mir ehrlich gesagt zuviel Aufwand mit Klassen und dann den Settern.
Aktuell ist es schlicht so:
es existiert ein Record und auf die einzelnen Werte greife ich zu une modifiziere sie mit TInterLocked.
Und damit ich nur an einer Stelle im Code die Variable selber habe ist es so gelößt
Delphi-Quellcode:
// unit _globals.pas
type
TTestRecord =
packed record
test, hallo, huhu: Int64;
end;
var aTestRecord: TTestRecord;
// Unit _enums.pas
type
TTestEnum = (test, hallo, huhu);
// unit log_utils.pas
procedure test(
const aTestEnum: TTestEnum; iIncrement: Integer = 1);
begin
case aTestEnum
do
TTestEnum.test:
TInterLocked.Add(aTestRecord.test, iIncrement);
TTestEnum.hallo:
TInterLocked.Add(aTestRecord.hallo, iIncrement);
TTestEnum.huhu:
TInterLocked.Add(aTestRecord.huhu, iIncrement);
end;
end;
// unit... überall da wo ich es brauche
test(TTestEnum.hallo, 5);
test(TTestEnum.huhu);
Wenn es auf einfache Art und Weise besser geht (wovon ich ausgehe) dann nehme ich diese Kritik gerne an!