Thema: Delphi tmemorystream.memory

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#7

Re: tmemorystream.memory

  Alt 27. Dez 2008, 16:13
Also am Einfachsten/Sichersten wäre es wohl für Lese- und Schreibzugriffe je einen eigenen Positionsspeicher einzurichten (eventuell gleich direkt im Stream, um Fehler zu vermeiden).

Hab hier mal schnell 'nen kleinen Ringspeicher erstellt.
  • Lese- und Schreiboperationen haben je 'ne eigene Positionsangabe
    (.PositionRead und .PositionWrite)
  • DataSize liefert die Größe der Daten im Speicher
    (also das zwischen Lese- und Schreibposition)
  • für die Kompatibilität zu TStream und Co. wird alles was .Position verwendet,
    je nach Einstellung in .DefaultOperations, an das Entsprechende(Read der Write) umgeleitet
  • TRingBuffer = Basistyp
    TMemoryRingBuffer = Ringspeicher im RAM
    TFileRingBuffer = Ringspeicher in Datei
  • Pufferüberlauf wird verhindert
    (beim Lesen/Schreiben wird die jeweils andere Position nicht überschritten)
  • standardmäßig wird über eine CriticalSection alles threadsicher gemacht
Angehängte Dateien
Dateityp: pas ringbufferstreams_114.pas (18,5 KB, 67x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat