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 

Wie auf eine Instanz aus parallelen Prozessen zugreifen?



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!

06.12.2010, 11:20
Beitrag #22

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
' schrieb:Beim Erzeugen der Instanz wird eine Referenz einer 2 Instanz (komplett andere Klasse) in die Queue geschrieben.
In die Queue wird die zu verwendende Instanz (blau) geschrieben. Die Referenz der Queue ist ein Datenteil einer zweiten Klasse (grün). Ob diese zweite Klasse notwendig ist, müsste man ausprobieren.

Ganz links (Create.vi) wird eine Instanz erzeugt: Blaue Linie. Die Instanz-Referenz wird in eine Queue geschrieben: Grüne Linie. In Set und Get wird nichts weiter gemacht, als die Referenz aus der Queue heraus gelesen und "benutzt". Hier endet das erste Beispiel (paradigm 1). Vorteil dieses Verfahrens ist es, dass von der blauen Klasse im "Arbeits-VI" nichts "zu sehen" ist. So, dass man nichts sieht, finde ich das gut. Hier ist die Klassen-Referenz pro VI-Aufruf gekapselt.

Der ganze rechte Teil macht nichts anderes, als zuerst die Referenz (aus der Queue) auszulesen, dann per dieser Referenz Daten zu bearbeiten. Zuletzt muss die Referenz natürlich wieder in die Queue. Dieses Verfahren finde ich nicht so schön. Hier ist die Klassen-Referenz in Teilen des VIs nicht mehr gekapselt. Daher darf zu diesen Zeiten der Datenfluß nicht unterbrochen werden.

Zitat:Wenn ich nun parallele Schleifen nutze, dann funktioniert das Ganze nicht unbedingt, da es sein kann, dass eine Schleife fortlaufend die Queue beschreibt und daraus liest und andere Schleifen nicht zum Zuge kommen oder?
Ja, hier sehe ich auch ein Problem. Das lässt sich aber minimieren, indem der eine Prozess nur in einem bestimmten Raster arbeitet. Zudem sollte die Queue so kurz wie möglich leer sein. [*nachdenk*] Hier sehe ich aber auch ein Problem.

Zitat:Kann man das nicht direkt mit einer einzigen Klasse machen und dort die Referenzen nutzen?
Ausprobieren.
Ich sag mal ganz unprofessionell: Referenz in Globale Variable legen. Dann ist die Referenz überall erhältlich - mit allen Risiken, die ja durch die Queue eliminiert werden.

Ich verwende meine MöchteGernKlassen wie folgt: Es gibt eine Queue, in die Steuerdaten geschrieben werden. Wenn also jemand die Daten der Klasse ändern will, schreibt er einen Datensatz in die Queue. Das "Klassen-Main-VI" pollt neben der eigentlichen Arbeit diese Queue. Steht da was drinnen, wird das entsprechende ausgeführt. Dieser Datensatz in der Queue entspricht einem Property. Zum Auslesen der Public-Daten gibt es einen Melder, der die Public-Daten enthält. Es ist mit allen Konsequenzen zu beachten, dass das Verwenden einen Queue zu einem asynchronen Ablauf führt! Man kann Propertys auch ohne Queue realisieren - das hat aber wegen der sehr beschränkten Anzahl von Eingängen eines VIs enge Grenzen.

Dieses Verfahren kann man natürlich auch mit einer Klassen-Instanz machen. Die Instanz-Referenz wäre dann im "Klassen-Main-VI" gekapselt und von außen nicht zugänglich - aber dafür gibt es sie nur ein einziges Mal.

[*grübel*]

Wenn du eine Referenz verwendest (siehe dein Beispielbild), werden vermutlich Probleme auftreten. Diese Referenz gilt als "global". Irgendwann musst du die Referenz dereferenzieren. D.h. aber: zwei Datenflüsse für eine Instanz! Das führt, wenn auch praktisch nur sehr schwer nachweisbar, zu RaceConditions.

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
Antwort schreiben 


Nachrichten in diesem Thema
Wie auf eine Instanz aus parallelen Prozessen zugreifen? - IchSelbst - 06.12.2010 11:20

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI TpunktN 8 4.716 28.06.2023 16:25
Letzter Beitrag: BNT

Gehe zu: