Einzelnen Beitrag anzeigen

mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#14

AW: IdUDPServer hat manchmal Datenverlust --> wie macht das Wireshark?

  Alt 3. Feb 2015, 01:47
TChart 500T Datenpunkte... wenn die Verarbeitung / Anzeige teilweise nicht hinter her kommt, worauf kommt es denn dann in deiner Anwendung an?

Lieber mal ein paar Daten "weglassen" und dafür aber die Anzeige möglichst immer wieder "realtime" synchron halten, ODER eine Art "Gummiband" mit Dynamischen Puffer, welcher alles "irgendwann" dann eben verzögert darstellt und erst wenn wenig los mal wieder realtime synchron ist.

Fall 1 wird gerne bei Börsendaten genommen, denn da zählt letztendlich nur der aktuelle Kurs, wenn da mal einer zwischendurch fehlt ist das zwar nicht schön, aber kein Kurs ist da teils besser wie ein alter und nun schon falscher Kurs, von dem man nicht weiß, das er "alt" ist.

Meine Lösung: 3 "Block"-Puffer mit 4 möglichen States:"Write","Data","Read","Free"
- nur die StateZugriffe müssen synchronisiert werden, eine einfache kurze CriticalSection reicht hier, sind ja nur 1 oder 2 Variablenzugriffe zu schützen
- der Empfangsthread setzt synchronisiert den Puffer mit "WriteState" auf "DataState" und wechselt zyklisch den anderen Puffer von "Free/Data-State" auf "WriteState", ein Pufferwechsel wird dem WorkThread "signalisiert"
- der WorkThread setzt synchronisiert den Puffer mit "ReadState" auf "FreeState" und setzt den Puffer mit "DataState" auf "ReadState", dann werden die Daten des neuen "ReadState" Puffers beliebig langsam verarbeitet/angezeigt
- wenn die Anzeige sagen wir mal 3sec dauert und der Empfangsthread alle 1sec den Puffer wechselt, dann werden eben mal 2sec keine Empfangsdaten angezeigt, dann aber dafür sofort wieder die aktuellsten... für Visuelle Aufgaben ist das oft die eleganteste Lösung... für vollständige Datenlogs ist das aber ungeeignet, da muss es dann ein dynamischer FiFo sein. => Bei FiFo-Lösungen aber immer einen Empfangs-TimeStamp mit abspeichern! Nur so kann man bei der "späteren" Verarbeitung/Anzeige dann erkennen, das es alte Daten mit Zeitverzug sind

Geändert von mensch72 ( 3. Feb 2015 um 01:51 Uhr)
  Mit Zitat antworten Zitat