Bool Werte über Queues - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenkommunikation (/Forum-Datenkommunikation) +---- Thema: Bool Werte über Queues (/Thread-Bool-Werte-ueber-Queues) |
RE: Bool Werte über Queues - NoWay - 03.07.2019 11:16 (03.07.2019 06:45 )MarcoN schrieb: Die Rechte Schleife überprüft nur ob du noch Daten in deiner Queue hast. Wenn die Queue nicht leer ist, hast du an der Stelle einen Deadlock. Die While Schleife beendet nicht und dein VI somit auch nicht. Besser: Beim Release Queue etwaige Restelemente weiter verwerten. RE: Bool Werte über Queues - jg - 03.07.2019 11:58 (03.07.2019 11:16 )NoWay schrieb:(03.07.2019 06:45 )MarcoN schrieb: Die Rechte Schleife überprüft nur ob du noch Daten in deiner Queue hast. Nicht ganz, in dem Beispiel VI läuft unten noch die Consumer-Schleife, die im Normalfall die Queue leert. Somit ist irgendwann die Queue leer, und die While-Schleife rechts keinen Deadlock. Erst danach wird die Queue zerstört und beendet darüber die Consumer-Loop. Der Sauberkeit halber sollte aber dann das Ausgabe-Element nicht mehr verarbeitet werden! Gruß, Jens RE: Bool Werte über Queues - GerdW - 03.07.2019 12:02 Hallo zusammen, "der Sauberkeit halber" sollte diese QueueStatus-Schleife eine Wartezeit enthalten… RE: Bool Werte über Queues - MarcoN - 03.07.2019 12:12 (03.07.2019 11:16 )NoWay schrieb:(03.07.2019 06:45 )MarcoN schrieb: Die Rechte Schleife überprüft nur ob du noch Daten in deiner Queue hast. Hallo NoWay, da kann ich dir so nicht recht geben. Ich habe schnell nochmal ein VI gebaut um deine Aussage zu kontrollieren aber ich beende mit dem "Stop" nur die Erzeugerschleife. Die Verbraucherschleife und die Warteschleife laufen weiterhin.. Erst wenn die Verbraucherschleife die gesamte Queue entleert hat wird auch die Warteschleife beendet und die Queue freigegeben. Edit: Zu langsam! RE: Bool Werte über Queues - GerdW - 03.07.2019 12:15 Hallo Marco, dann nimm doch einfach die Wartezeit aus dem Verbraucher! Die hat da sowieso nichts zu suchen… (Und wenn schon aus irgendeinem Grund Wartezeiten, dann sollte der Consumer (im Durchschnitt) immer noch schneller als der Producer sein!) RE: Bool Werte über Queues - NoWay - 03.07.2019 12:17 Jajaja, ihr habt ja recht, ich ergebe mich. Da waren die Finger schneller als der Kopf RE: Bool Werte über Queues - MarcoN - 03.07.2019 12:22 (03.07.2019 12:15 )GerdW schrieb: Hallo Marco, Hallo Gerd, die Wartezeit sollte doch nur zum Simulieren dienen. Wollte nur das die Verbraucherschleife langsamer läuft und sich die Queue füllt RE: Bool Werte über Queues - Lucki - 03.07.2019 19:49 Ich halte die Prüfung vor dem Stop, ob noch Elemente in der Schleife sind (von Sonderfällen abgesehen) für Krampf. Einfach die Queue zerstören und fertig is. Hier als Spaß noch ein Beispiel mit Ereignisstruktur für den Stop-Knopf. [attachment=60158] RE: Bool Werte über Queues - maxil - 04.07.2019 08:34 Hallo Marco, danke für die vielen Tipps und Anregungen, die mich nun doch etwas fordern . Wie gesagt, verzeiht blöde Fragen! Ich habe das VI mal angehangen, nun bin ich mir nicht ganz sicher, wie ich die Auswertung der Buttons und die weitere Verarbeitung der Funktionen dann am besten in der Verbraucherschleife durchführe, wäre die Ereignisstruktur hier zuviel des guten und wäre es im Zusammenhang mit den Queues doppelt? Ich verstehe auch das Konzept der Queues glaube ich noch nicht ganz, soll eine bestimmte Funktion durch einen bestimmten Button ausgeführt werden, wie wird bei mehreren Dequeue Elementen unterschieden, welches benutzt werden soll oder spielt es keine Rolle und ich benötige nur eins, da sowieso nur ein Button gedrückt werden kann, wie bekommen dann unterschiedliche Funktionen aber mit, welche ausgeführt werden soll? RE: Bool Werte über Queues - NoWay - 04.07.2019 08:56 (04.07.2019 08:34 )maxil schrieb: […] wie wird bei mehreren Dequeue Elementen unterschieden […] Obacht. Genau hier liegt die Tücke. Du kannst und darfst eine Queue durchaus von mehreren Positionen aus füttern. Das Entleeren bzw. Lesen (Dequeue) sollte aber nur an einem Punkt geschehen. Andernfalls wird das ganze Gebilde inkonsistent und deine Daten wandern überall hin, nur nicht dort, wo du sie benötigst oder erwartest. Kurzum um: Eine Queue hat mehrere Quellen und nur eine Datensenke. Du müsstest dann die Daten HINTER der Senke weiter verarbeiten oder neu verteilen, wenn es erforderlich ist. |