AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TThreadedQueue vs ThreadedRingBuffer
Thema durchsuchen
Ansicht
Themen-Optionen

TThreadedQueue vs ThreadedRingBuffer

Ein Thema von QuickAndDirty · begonnen am 3. Feb 2025 · letzter Beitrag vom 4. Feb 2025
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.003 Beiträge
 
Delphi 12 Athens
 
#1

AW: TThreadedQueue vs ThreadedRingBuffer

  Alt 4. Feb 2025, 09:10
Genau, der RingBuffer, so wie ich ihn verstehe, muss nur einmal seine Speicher-Kapazität allozieren und zeigt dann quasi nur mit Start- und Ende-Pointern auf den entsprechenden Abschnitt in seinem gesamten Speicherbereich, was den Zugriff theoretisch viel effizienter machen sollte, weil nie etwas hin- und herkopiert wird.
Dafür kann es aber auch einen Überlauf geben.
TThreadedQueue macht das genau so.
Intern speichert es einen ReadPointer "FQueueOffset mod length(fQueue)" in form eines index auf ein Array und einen WritePointer "(FQueueOffset + fQueSize) mod length(fQueue)" ebenfalls als index auf das Array fQueue.

Und da die TThreaded-Komponenten ja selbst das Threadsichere handhaben, kann man da meistens direkt auf Add/Remove/Push/Pop/... zugreifen, weil sie intern sich selbst absichern (wenn diese Methoden direkt oben public erreichbar sind)
Ich hatte halt nur irgendwie gehofft dass ein Ringspecher ohne Vollsperrung für threadsicherheit auskommen würde.
Vermutlich müsste es dafür ein Ringspeicher auf Basis einer Verkettetenliste sein?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz