Forum: Programmieren allgemein
by Uwe Raabe,
2. Jul 2017
Das ist halt eine notwendige Bedingung, aber keine hinreichende.
Forum: Programmieren allgemein
by Uwe Raabe,
2. Jul 2017
Durch den Oberhead beim Aufruf von TInterlocked ist das potentiell weniger performant:
Unit191.pas.39: TInterlocked.Increment(I);
005FA2E4 8D45F8 lea eax,
005FA2E7 BA01000000 mov edx,$00000001
005FA2EC E8B725F1FF call TInterlocked.Add
005FA2F1 8945F4 mov ,eax
Unit191.pas.40: Inc(I);
005FA2F4 FF45F8 inc dword ptr
Forum: Programmieren allgemein
by Uwe Raabe,
2. Jul 2017
Was verstehst du denn unter "Sicherheit beim Schreiben"? Solange die zu inkrementierende Variable nur aus einem Thread (z.B. dem Hauptthread) benutzt wird, besteht ja überhaupt keine Gefahr. Sobald aber auch andere Threads ins Spiel kommen muss das Interlocked immer verwendet werden (auch aus dem Hauptthread) - solange keine anderen Schutzmechanismen (z.B. CriticalSection) aktiv sind.