![]() |
Multithreading-Projekt: PPL oder OmniThreadLibrary?
Ich stehe vor einer Aufgabe, die ich ohne den gut durchdachten Multi-Threading werde wahrscheinlich nicht lösen können.
Folgender Aufgabe: Über zwei WebSocket-Verbindungen bekomme ich extrem viele Datenpakete (bis zu 500 pro Sekunde, bis zu 4 KB groß). Bei den Datenpaketen handelt es sich um die Sensorendaten, die möglichst schnell verarbeitet und visualisiert werden müssen. Mit „möglichst schnell“ ist gemeint, dass jede vermeidbare Verzögerung vermieden und dadurch die max. mögliche Performance erreicht werden soll. Andererseits soll das Ganze stabil bleiben und das System nicht extrem überlasten. Jedes empfangene Datenpaket muss folgende Schritte durchlaufen: 1. Entschlüsseln 2. Die entschlüsselten XML- oder JSON-Daten in einen Objekt (oder Record) umwandeln. 3. Eine n Zahl der vordefinierten Filter durchlaufen, wodurch das Objekt durch zusätzliche Daten ergänzt wird. Hier finden nun auch Zugriffe (u.a. schreibende) auf die Variablen der Filter-Objekte statt, die potenziell aus mehreren parallel laufenden Threads erfolgen können. Diese Zugriffe müssen mit möglichst geringen Performanceeinbüßen geschützt werden. 4. Hinzufügen des neuen Objekts einem thread-sicheren Container, der als Custom Data Source für die DevExpress Quantum Grid dient. Was das am besten für ein Container sein soll, ist auch eine Frage. 5. Visualisieren des Objektes in einem Grid. 6. Darstellung der Objektdaten in einem Chart. 7. Eventuell Ausgabe eines akustischen Signals. Die Datenpakete seriell zu verarbeiten kommt bei der Menge der Daten nicht infrage. Jedes Datenpaket unkontrolliert einem neuen Thread zuzuweisen und hoffen, dass alles glatt läuft, auch. Es muss also ein cleverer Thread-Manager her, der für den schnellen und stabilen Ablauf bei möglichst vielen parallel laufenden Tasks sorgt. Ich habe an Parallel Programming Library oder OmniThreadLibrary gedacht. Ich lese gerade viel über OmniThreadLibrary und je mehr ich lese, desto stärker neige ich dazu, das Ganze mit der Library zu realisieren. Es scheint einfach so, dass die Bibliothek für jede erdenkliche Situation eine passende fertige Lösung hat und dabei auf Performance ausgelegt ist. Wie würdet Ihr das Ganze realisieren? Für möglichst detaillierte Gedankenäußerungen und kleine Code-Bespiele für das bessere Verständnis bedanke ich mich im Voraus! |
AW: Multithreading-Projekt: PPL oder OmniThreadLibrary?
Moin...8-)
Gedanken dazu: Zitat:
PS: Welches Meßgerät liefert die Meßdaten in 2ms Rhytmus? Welcher Meßzeitraum wird betrachtet? 10s oder 24h? |
AW: Multithreading-Projekt: PPL oder OmniThreadLibrary?
Zitat:
Ist das so gewollt bzw. hast du daran gedacht? |
AW: Multithreading-Projekt: PPL oder OmniThreadLibrary?
Zitat:
Zitat:
Zitat:
|
AW: Multithreading-Projekt: PPL oder OmniThreadLibrary?
Ich arbeite an einem ähnlichen Projekt...
Ich nehme weder die PPL noch etwas anderes "von der Stange". Alle Threads erzeuge ich selber mit eigener Logik für die Verwaltung. Ein gutes Queue-Konzept ist hier der Schlüssel zum Erfolg. Mavarik |
AW: Multithreading-Projekt: PPL oder OmniThreadLibrary?
Zitat:
|
AW: Multithreading-Projekt: PPL oder OmniThreadLibrary?
Zitat:
Mavarik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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