INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

11.02.2015, 15:03
Beitrag #1

lumaxo Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Feb 2014

2012 SP1
2013
EN



Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue
Hallo,

Häufig wird die Verbraucher-Schleife wie in diesem Erzeuger-Verbraucher Beispiel beendet. Sprich nachdem die Erzeuger Schleife beendet wurde, wird die Queue freigegeben. Beim nächsten Aufruf von "Element entfernen" wird ein Fehler ausgegeben und die Verbraucher Schleife beendet. Soweit so gut, allerdings möchte ich sicherstellen das die Verbraucher-Schleife erst dann beendet wird nachdem alle Elemente aus der Queue "abgearbeitet" sind.

Mein Ansatz ist in der angehängten VI zu sehen. Hat jemand eine bessere Idee dies zu realisieren oder passt das so?

Zusatzfrage: Was soll eigentlich das Schieberegister bei der Queue-Referenz im verlinkten Bild? Bei dem Fehlercluster macht das ja Sinn aber bei einer Referenz?Hmm


Angehängte Datei(en) Thumbnail(s)
   

12.0 .vi  Verbraucher-Erzeuger.vi (Größe: 14,29 KB / Downloads: 205)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.02.2015, 15:21
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue
Hallo lumaxo,

Lösungsvorschläge:
- Mit NamedQueues arbeiten und für Producer und Consumer je eine eigene Referenz erfragen. Dann im Erzeuger die Ref freigeben, ohne die Queue gleich komplett zu löschen. Im Verbraucher dann mit einem Timeout arbeiten und testen, ob die Queue für eine bestimmte Zeit ohne Daten bleibt…
- Im Erzeuger nicht nur Daten, sondern auch Befehle in diese Queue schreiben, z.B. mit einem Cluster [Befehl, Daten]. Als letztes wird der Befehl "Quit" in die Queue geschrieben und der Verbraucher weiß dann, dass er sich beenden darf…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2015, 15:40 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2015 15:50 von jg.)
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue
(11.02.2015 15:03 )lumaxo schrieb:  Zusatzfrage: Was soll eigentlich das Schieberegister bei der Queue-Referenz im verlinkten Bild? Bei dem Fehlercluster macht das ja Sinn aber bei einer Referenz?Hmm
Eine Schieberegister bei einer Refnum (egal welcher) stellt sicher, dass die Refnum auch bei null Durchläufen einer Schleife am Ausgang gültig ist. Bei einer LabVIEW-While-Schleife gibt es natürlich niemals null Durchläufen, aber einer FOR-Schleife durchaus.

   

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2015, 16:25 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2015 16:27 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue
Das ist natürlich eine eher abnorme Anwendung, denn normalerweise sollte man dafür sorgen, dass die Verbraucherschleife schneller ist als die Erzeugerchleife.
Da die Queue immer länger wird und Du sie nicht begrenzt hast, dürfte das VI nach einigen Tagen abstürzen, wenn sämtliche Resourcen des PC verbraucht sind.
Zur Antwort von Jens, in Klartext übersetzt: Das Shift-Register ist in der oben einfach unnötig, weil es sich um eine while-Schleife handelt. Unten ist es doppelt unnötig, da es sich im eine while-Schleife handelt und der Ausgang außerdem gar nicht benutzt wird.
Ich würde einfach einen Timeout als Abbruchbedingung vorgeben der normalerweise nicht vorkommt.

12.0 .vi  Verbraucher-ErzeugerWA.vi (Größe: 8,87 KB / Downloads: 249)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.02.2015, 10:11
Beitrag #5

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue
(11.02.2015 16:25 )Lucki schrieb:  Das ist natürlich eine eher abnorme Anwendung, denn normalerweise sollte man dafür sorgen, dass die Verbraucherschleife schneller ist als die Erzeugerchleife.

Das stimmt nicht ganz. Es gibt oft die Situation, dass der Erzeuger Daten als Burst mit hoher Priorität erzeugt und der Verbraucher diese mit niedriger Priorität abarbeitet, z.B. bei uns an der GSI: Während der Ionenstrahl ans Experiment geliefert wird werden Daten mit hoher Priorität erfasst und in die Queue geschrieben. Die Strahl Pause ist oft deutlich länger, sodass der Verbraucher auch bei niedriger Priorität genügend Zeit bekommt, um seine Aufgabe zu erledigen, z.B. Daten Speichern oder für die Online-Visualisierung analysiert. Insgesamt muss der Durchsatz natürlich gewährleistet sein. Aber im Falle eine Abbruchbedingung sollen dennoch alle Element in der Queue abgearbeitet, insbesondere gespeichert werden.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.02.2015, 13:55 (Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2015 13:57 von Lucki.)
Beitrag #6

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue
@Hoger
Hast Recht, aber ich hatte hier von "nomalerweise" gesprochen, und was "normal" ist, darüber streitet sich die Menschheit von jeher. (Manche halten heutzutage 20 verschiedene Geschlechter für normal, andere nur 2.) Also einigen wir uns darauf, dass deine burstweise Erzeugung noch "normal" ist und formulieren es so: Die Mittlere Verbraucherrate sollte höher er sein als die mittlere Erzeugerrate.
Gruß Ludwig
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Wie auf abgearbeitete Queue warten mez15 11 8.086 28.09.2017 13:02
Letzter Beitrag: TR61
  Ansprechendes Design des Frontpanels | Muster in Hintergrund einfügen dulfried 3 4.312 23.08.2017 17:45
Letzter Beitrag: GerdW
  Datum Uhrzeit Queue DeleteAll 8 5.682 24.03.2017 15:47
Letzter Beitrag: GerdW
  String mit IP-Muster vergleichen? C.Maier 4 5.072 08.11.2016 08:29
Letzter Beitrag: C.Maier
  Protokolieren durch TDMS in einer Erzeuger und Verbraucher Synchronisation Atlaspremier 0 2.716 28.07.2016 13:21
Letzter Beitrag: Atlaspremier
  TDMS in Queue laden gifo 8 5.466 07.01.2016 16:41
Letzter Beitrag: GerdW

Gehe zu: