Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Jan 2022
siehe mein Edit?
Alles Testen ist schwer.
Explizit einige bestimmte Sperrszenarien kann man als Test aufbauen,
aber prüfen, ob eine Funktion per se threadsave ist, kann nicht getestet werden, außer man führt es milliardenmal mit unterschiedlichen Timings/Auslastungen aus und hofft man trifft zufällig eine problematische Überschneidung.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Jan 2022
Historisch hab ich sonst ein Leave statt Exit (Exit hier, weil's in TMonitor so heißt)
Implizit ... joar, ich war schreibfaul ... statt du überall vor Ort zu machen,
kann man auch in der Ableitung die Methoden ala Add usw. überdecken/überschreiben und dort das Enter/Exit/Leave rein tun.
Überschreiben (virtual+override) ist besser, falls man zwar die TRingbuffer_Safe<> verwendet, aber die...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Jan 2022
Es ist dir ja nicht verboten eine CriticalSection, oder sonstwas hinzuzufügen.
System.TMonitor.Enter(Buffer);
Buffer.Add(irgendwas);
System.TMonitor.Exit(Buffer);
Buffer.Enter;
Buffer.Add(irgendwas);
Buffer.Exit;