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!

03.12.2010, 10:53 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2010 10:56 von Matze.)
Beitrag #11

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
Hallo,

ich habe auch eine Frage dazu, bin mir aber nicht klar, wie ich das umsetze:

Ich habe in den Private-Daten z.B. einen boolschen Wert. Einmalig weise ich dem nun etwas zu.
Anschließend möchte ich parallel auf diesen Wert zugreifen können (vorwiegend lesend, aber z.T. auch schreibend).

D.h. ich muss die Klassen-Instanz verzweigen, habe dann aber jeweils pro Verzweigung eigene Private-Daten und nicht mehr die selben. Ich möchte jedoch überall die selben haben.

Das ist vermutlich das, was IchSelbst auch möchte, aber ich verstehe überhaupt nicht, was ich da nun machen muss. Das Ganze irgendwie global über FGVs? Das kann's ja nicht sein ...Unsure
Oder wie in einem der Beispiele die Klassenreferenz verwenden?
Das ist total unübersichtlich, da dann die Farben der Drähte alle gleich sind und auf den ersten Blick nicht mehr unterschieden werden kann, was wohin gehört.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2010, 13:07
Beitrag #12

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
Wie wäre es denn mit dem Reference Pattern?
Prinzip: Was ist in LabVIEW referenzierbar? --> Eine Queue.
Schiebe dein Objekt nach der Erzeugung einfach in eine Single Element Queue. Schreibe dir ein Checkin und ein Checkout VI, welches das Objekt aus der Queue herausholt und wieder hineinschiebt. Solange das Objekt ausgecheckt ist kann der zweite Thread nicht darauf zugreifen. Vorteil: Du hast einen gegenseitigen Auschluss und Raceconditions vermieden.Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2010, 13:28
Beitrag #13

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
Per DVR auf die Klasseninstanz bekommst du den Bonus, das dyn. Dispatch transparent funktioniert.
Wobei ich üblicherweise auch eher die alt-hergebrachte (NB-)SEQ benutze.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2010, 15:05
Beitrag #14

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:Schiebe dein Objekt nach der Erzeugung einfach in eine Single Element Queue. Schreibe dir ein Checkin und ein Checkout VI, welches das Objekt aus der Queue herausholt und wieder hineinschiebt. Solange das Objekt ausgecheckt ist kann der zweite Thread nicht darauf zugreifen. Vorteil: Du hast einen gegenseitigen Auschluss und Raceconditions vermieden.
Naja, das ist aber auch nur das eine von zwei Übeln (Das andere Übel sind die FGVs).

Der Vorteil von LV gereicht hier zum Nachteil: Wenn ein Datensatz, ob abgelegt in FGV, Queue oder Klasse, sich wegen Bearbeitung gerade in einem Datenfluss befindet, so darf der Datenfluss solange nicht gestört werden, bis der Datensatz wieder abgelegt ist (in FGV, Queue oder Klasse). Dumm nur, dass LV per se ein Multitasking-System ist (jede While-Schleife eine Task), das es dem Anwender leicht macht (bis hin zu: er merkt es gar nicht), die Datenflüsse in anderen Tasks zu stören (fatale Folge wäre RaceCondition).

Die Queue-Methode ist einfach zu durchschauen: befinden sich die Daten der Queue zwecks Bearbeitung in einem Datenfluss - sind sie nicht mehr in der Queue und somit für jeden anderen nicht "störbar". FGVs sind eine Stufe komplizierter: Die Bearbeitung findet innerhalb des FGVs-SubVis statt. Da während der Bearbeitung das SubVI nicht noch ein zweites Mal ausgeführt werden kann, stellt auch das eine sichere Methode dar. Man darf natürlich nicht die zu bearbeitenden Daten aus dem SubVI herausgeben, bearbeiten und wieder hineingeben. Dann ist ein Datenfluss vorhanden, der von extern störbar ist (= RaceCondition).

Am liebsten hätte man natürlich eine Klassen-Instanz, die prinzipiell funktioniert wie eine FGV: Solange eine Instanz arbeitet, kann sie von niemand anderem Arbeit entgegennehmen.

Ich bleibe vorerst bei meinen FGVs. Die reichen für meine Belange bisher vollkommen aus.

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
03.12.2010, 15:49 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2010 15:49 von abrissbirne.)
Beitrag #15

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
' schrieb:Ich bleibe vorerst bei meinen FGVs. Die reichen für meine Belange bisher vollkommen aus.
Dafür musst du für jede Aufgabe eine FGV "schreiben" bzw. ein VIT öffnen und anpassen. Mit LVOOP machst du das einmal und ann nie wiederTongue
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2010, 15:53
Beitrag #16

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
Jepp, von der Skalierbarkeit her, sind FGVs einfach nicht wirklich gut, schon gar nicht, wenn dynamische Instanzierungen benötigt werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.12.2010, 23:16
Beitrag #17

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:Mit LVOOP machst du das einmal und ann nie wiederTongue
Eine "Bitte Warten"-Instanz mit AutoCountDown und ein Ein-Button-Quittierungs-Dialog von einem Klassentyp ableiten?

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
04.12.2010, 00:03
Beitrag #18

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
' schrieb:Wie wäre es denn mit dem Reference Pattern?
Prinzip: Was ist in LabVIEW referenzierbar? --> Eine Queue.
Wie meinst du das genau?
Wenn ich mit dem Objekt etwas machen möchte, schreibe ich eine Referenz in eine Queue, damit parallele Zugriffe verhindert werden?

Wenn man es über Referenzen löst, macht man das dann über einen "Dummy-Ausgang" oder geht das eleganter?
Beispiel:

   

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.12.2010, 07:44
Beitrag #19

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
"Reference Pattern" oder auch by-ref Klassen sind als Example enthalten.
Prinzipiell ist's eine SEQ mit by-val Object als Inhalt.

LV2010 Example Finder:
"ReferenceObject.lvproj
Description:
This example demonstrates by-reference objects using LabVIEW classes."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.12.2010, 08:48
Beitrag #20

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie auf eine Instanz aus parallelen Prozessen zugreifen?
Danke. Wenn man weiß, wonach man suchen muss, ist manches einfacher.Wink

Sieht kompliziert aus, aber ich versuche es mal.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


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

Gehe zu: