Forum: Algorithmen, Datenstrukturen und Klassendesign
by Rollo62,
8. Jan 2022
Genau, ich rede ja auch nur von meiner Anwendung, mit reinen TBytes Streams.
Dass der universelle RingBuffer so nicht optimiert werden kann ist klar.
Deshalb schreibe ich ja dass ein Vergleich mit Äpfeln und Birnen etwas unfair ist :stupid:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Rollo62,
8. Jan 2022
Wie schon gesagt, basierend auf TMemoryStream, mit Interlocked Pointern und Flags zur möglichst effizienten Kontrolle der aktuellen Start/End Pointer, und zur Minimierung von echten CriticalSections.
Ich brauche das im Moment um zufällig eingehende TBytes Sendungen mit variabler Länge, von regelmäßigen Bearbeitungen , welche diese TBytes Daten abholen und verarbeiten sicher zu entkoppeln.
Also...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Rollo62,
4. Jan 2022
Das könnte vielleicht mit viel Interlocked Pointer-Einsatz gehen, würde ich mal vermuten.
https://ferrous-systems.com/blog/lock-free-ring-buffer/
Aber das wäre dann sicher schon die nächste Ausbaustufe des RingBuffers.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Rollo62,
3. Jan 2022
Stimmt auch wieder, ist ja ein Ring und der muss immer irgendwie geschrieben werden.
Allerdings könnten einige Abfrage-Funktionen womöglich mit InterlockedFunktionen abgesichert werden,
statt mit dem großen TMonitor Aufwand.
Meine aktuelle RingBuffer-Implementierung ist auf der Basis eines TMemoryStreams gemacht
weil es dabei um Byte-Ströme geht, mit CriticalSections, damit bin ich...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Rollo62,
3. Jan 2022
Ja an sowas dachte ich eigentlich auch, nur eben auf Basis des TRingBuffer's.
Deshalb frage ich ja ob da schon sowas geplant ist und womöglich kommen wird, oder eher nicht.
Ja sowas ginge auch.
Ich dachte aber eher an eine Klasse die implizit threadsafe ist,
also z.B. TRingbuffer<T> und TRingbuffer_Safe<T>
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Rollo62,
3. Jan 2022
Der Thread ist schon etwas älter, aber hatte ich ganz aus den Augen verloren,
und bin gerade durch GetIt nochmal draufgestossen worden dass es den RingBuffer gibt.
Soweit ich das sehe ist dieser nicht threadsafe.
Gibt es da Bestrebungen das mal in diese Richtung zu erweitern ?
Ich benutze RingBuffer um Input/Output Ströme zu entkoppeln, die dann mit unterschiedlichen, variablen Datenraten...