Queue-Elemente von mehreren Consumern auswerten lassen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Queue-Elemente von mehreren Consumern auswerten lassen (/Thread-Queue-Elemente-von-mehreren-Consumern-auswerten-lassen) |
Queue-Elemente von mehreren Consumern auswerten lassen - TSC - 21.04.2009 09:50 Moin zusammen, ich habe eine Producer/Consumer-Struktur mit Queues aufgebaut. In einem VI werden Messwerte an die Queue angefügt. Andere VIs sollen diese Werte verwenden. Beispielsweise soll ein VI die Daten auf Sicherheitsprobleme überprüfen, ein weiteres soll die Daten anzeigen und ein drittes VI soll die Daten speichern. Wie kann ich sicherstellen, dass aller drei Consumer die Daten erhalten? Ich kann die Daten mittels ELEMENT AUS QUEUE ENTFERNEN abrufen. Damit würde aber nur ein Consumer die Daten erhalten. Eine alternative ist die Funktion QUEUE-STATUS LESEN. Dabei würden die Daten in der Queue erhalten bleiben. Aber an welcher Stelle würde ich dann ein Element entfernen? Oder ist diese Struktur einfach nciht für mehrere Consumer gedacht? Über Anregungen und fröhliche Beschimpfungen freue ich mich wie immer! *zwinker* LG Torsten Queue-Elemente von mehreren Consumern auswerten lassen - Lucki - 21.04.2009 12:48 Es gibt da rein logisch schwer zu lösende Probleme, wenn die Consumer nicht synchron arbeiten und sich tatsächlich - was ja der Sinn der Queue ist- mehrere oder viele Elemente in der Queue befinden. Aus diesem Grunde ist die Verteilung derselben Daten auf mehrere Consumer nur bei Meldern implementiert. Dort gibt es spezielle Funktionen. Queue-Elemente von mehreren Consumern auswerten lassen - TSC - 21.04.2009 12:52 Bei Meldern ist es doch so, dass man die Meldung nicht explizit entfernen muss, oder? Die letzte Meldung wird also erst dann überschrieben, wenn eine neue Meldung gesendet wird. Dann müsste ich also sicherstellen, dass alle Consumer abgearbeitet wurden, bevor eine neue Meldung verschickt wird, was irgendwie ein ähnliches synchronisationsproblem darstellt. Ich werde mir die Melder-Funktionen mal genauer ansehen. Danke für den Tipp. Queue-Elemente von mehreren Consumern auswerten lassen - schrotti - 21.04.2009 14:03 Schau dir die Funktion "Auf Meldung mit Melderhistorie warten" an. Setz den Eingang "Vorherige ignorieren" auf True und die Funktion wartet den angebenen Timeout, bis alle Funktionen "Auf Meldung warten" die Meldung abgeholt haben. Queue-Elemente von mehreren Consumern auswerten lassen - TSC - 21.04.2009 14:13 Das klingt gut. Ich werde lesen und studieren. Danke! Queue-Elemente von mehreren Consumern auswerten lassen - jewi - 22.04.2009 10:13 Ich hab zu deinem Problem auch noch einen Vorschlag. In dem VI sind drei Schleifen die über die Queue verbunden sind. Bei mir sind alle Schleifen gleichberechtigt. Vielleicht hilft dir das weiter. Queue-Elemente von mehreren Consumern auswerten lassen - TSC - 22.04.2009 10:29 Dein VI zeigt ja genau die Problematik. Du hast in zwei Schleifen die Funktion "aus queue entfernen". wenn also nun schleife 1 als erstes bearbeitet wird, dann erhält schleife 2 das element gar nicht mehr. weil es in schleife eins gelöscht wurde. und schleife drei erhält es ebenfalls nciht. Queue-Elemente von mehreren Consumern auswerten lassen - jewi - 22.04.2009 10:53 Ich hab es anders aufgebaut. In meiner Queue gibt es immer nur maximal ein Element. Der Inhalt dieses Elements wird in den Schleifen verändert und das Element dann wieder in die Queue zurück gelegt. Die anderen Schleifen bekommen dadurch immer aktuelle Daten. Es geht nichts verloren. Queue-Elemente von mehreren Consumern auswerten lassen - Y-P - 22.04.2009 22:31 Du könntest auch einfach eine 2. oder 3. Queue erstellen, die die Daten einfach weiterreicht/weiterreichen. Hier ein kleines Bsp., das ich Dir zusammengeklickt habe : [attachment=17953] Gruß Markus Queue-Elemente von mehreren Consumern auswerten lassen - eg - 22.04.2009 23:08 Mein Vorschlag - jedem Consumer seine Queue! |