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 

Producer-Consumer in einer dritten Hauptschleife



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!

20.10.2010, 15:18
Beitrag #1

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Producer-Consumer in einer dritten Hauptschleife
Hallo zusammen,

heute hat mir ein Kommilitone ein paar seiner Werke gezeigt. Bei folgender Struktur musste ich ein bisschen die Stirn runzeln ohne wirklich meine Skepsis begründen zu können.

Es war eine State-Machine, die im DAQ-Frame eine Producer-Consumer Architektur hatte.
   

Spricht da etwas dagegen? Ich hätte es halt definitiv nicht so gemacht und alles in den beiden inneren Schleife untergebracht ohne was drumherum.


Gruß dimitri

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.10.2010, 15:47 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2010 16:14 von Lucki.)
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Producer-Consumer in einer dritten Hauptschleife
Das kommt darauf an.

Es spricht ganz schwer etwas dagegen, wenn der Datenaustausch über lokale Variable erfolgt. Dann ist die Synchronisation nicht gegeben. Der Producer produziert ohne Rücksicht auf Verluste in seinem Takt darauf los, und der Consumer liest, ja nachdem ob seine Schleife schneller oder langsamer läuft, entweder Werte doppelt oder gar nicht. Dann ist die Zusammenlegung von beidem in einer einzigen Schleife das einzig Wahre.

Bei Verwendung eine Queue zu Übertragung gibt es aber Vorteile bei dieser Struktur.
Z.B. dieses Szenarium:
Die Producer erzeugt gleichmäßig Werte. Der Consumer ist im allgemeinen schneller als der Producer. Solange das der Fall ist, befindet sich in der Queue immer höchstens 1 Element.

Nur manchmal, so sei jetzt mal angenommen, braucht der Consumer länger und ist langsamer als der Producer (wenn z.B. etwas abzuspeichern ist). In diesem Fall macht der Producer gleichmäßig weiter, lediglich die Queue, die sonst immer nur höchsten ein Element enthält, füllt sich mit mehreren Elementen an. Bei den folgenden Zyklen leert sich dann die Queue wieder.

Bei Verzicht auf die Queue und Zusammenlegung von Producer und Consumer in eine einzige Schleife würde der Producer in seiner Erzeugung hingegen sofort gestoppt, wenn der Consumer zur Verarbeitung der Daten mal etwas länger braucht.

Edit: Habe wohl nur Bekanntes gesagt, es ging ja eigentlich um die dritte Schleife ganz außen. Die wird ja nicht mehr durchlaufen, solange die Datenerfassung läuft.
Weder läßt sich die Datenerfassung dann abstoppen noch das ganze Programm beenden. Das sind aber alles nur Hürden für den Anfänger, wie Supergurus haben da natürlich unsere Tricks im Beutel, um das Problem zu lösen Mellow
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2010 16:07 von dimitri84.)
Beitrag #3

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Producer-Consumer in einer dritten Hauptschleife
Das mit der Queue hat er schon richtig gemacht. Es ging mir um etwas anderes.

Ich stelle mir das immer so vor, dass eine Schleife einen Thread bekommt und dann gegebenenfalls auch einen "eingenen" Kern zum rechnen (falls mehr als einer vorhanden). Wenn nun aber die Producer-Consumer ihrerseits in einer Schleife drinsteckt, könnte diese Verschachtelung vielleicht zu einer weniger optimalen Verteilung der Ressourcen führen. Wahrscheinlich quatsch und der LV Compiler schafft es trotzdem zwei separate parallele Threads zu erzeugen. Oder?

' schrieb:... und der LV Compiler schafft es trotzdem zwei separate parallele Threads zu erzeugen. Oder?
Bei dem Satz fällt mir was ein: Ich habe letzte Woche nach ner Nebentätigkeit im Institut für Sportinformatik gefragt und als Antwort bekommen: "Wir programmieren hier mit Compiler-Sprachen wie C oder Delphi" ... die halbe Welt denkt LV sei eine Scriptsprache ...

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 16:12
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Producer-Consumer in einer dritten Hauptschleife
' schrieb:heute hat mir ein Kommilitone ein paar seiner Werke gezeigt. ...
Bei genau diesem Konzept gebe ich folgendes zu bedenken:
- Irgendwann wird das BD so groß, dass es unübersichtlich wird. => Auslagern der While-Schleifen in SubVI (dann ist es nicht mehr "genau dieses Konzept").
- Dieses Konzept verleitet dazu, Lokale Variablen quer zu verwenden. Siehe Lucki. Möglicherweise auch RaceConditions.
- Besteht hier die Möglichkeit, die Loops (eigentlich die Schrittkette) manuell abzubrechen?


Zitat:alles in den beiden inneren Schleife untergebracht ohne was drumherum.

Welches Konzept man verwendet, hängt (auch) vom Einsatzfall der Applikation ab: Habe ich ein professionelles System für einen Kunden oder reicht ein schnelles Laborprogramm, das ich selbst bediene. Für letzteres kann man ohne weiteres das obige Konzept verwenden. Für ein professionelles System würde ich auf jeden Fall zu einer Modularisierung raten. Dann wäre der Producer z.B. ein Standalone-Modul, das in einem SubVI läuft. Dieses SubVI würde dann im MainVI als paralleler Prozess laufen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2010, 16:17
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Producer-Consumer in einer dritten Hauptschleife
' schrieb:Wenn nun aber die Producer-Consumer ihrerseits in einer Schleife drinsteckt, könnte diese Verschachtelung vielleicht zu einer weniger optimalen Verteilung der Ressourcen führen. Wahrscheinlich quatsch und der LV Compiler schafft es trotzdem zwei separate parallele Threads zu erzeugen.
Mach dir da mal gar keine Gedanken. Ich hab zehn, manchmal bis zu zwanzig "Klassen", also parallele Prozesse laufen. Das ist gar kein Problem.

Zitat:und als Antwort bekommen: "Wir programmieren hier mit Compiler-Sprachen wie C oder Delphi" ... die halbe Welt denkt LV sei eine Scriptsprache ...
Ich kann ja auch nicht verstehen, warum man LV nimmt, nur weil man die RS232 abfragen will. Das geht in allen anderen Sprachen einschließlich VB leichter als in LV. Und bis LV die Qualität der Delphi-IDE erreicht hat, muss LV schon noch fünf Versionen nachschieben ...

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Queue verwendung in komplexer Producer/Consumer Abhängigkeit Ksanto 8 5.006 03.04.2017 20:14
Letzter Beitrag: Ksanto
  Producer/Consumer? Neon88 2 4.687 12.09.2012 17:07
Letzter Beitrag: Neon88
  Producer-Consumer Struktur ThermoHiwi 4 5.197 28.04.2011 11:14
Letzter Beitrag: ThermoHiwi
  Pausieren von parallel ablaufenden Producer/Consumer Schleifen Aleph1 19 13.577 24.06.2010 12:38
Letzter Beitrag: Aleph1
  Producer-Consumer Struktur Labneuling 3 6.374 28.05.2010 17:41
Letzter Beitrag: eg
  Producer Consumer zum Messdaten speichern JangoXP 3 3.699 28.08.2008 08:23
Letzter Beitrag: JangoXP

Gehe zu: