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 

Parallelschleifen



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!

21.05.2017, 12:08
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Parallelschleifen
(21.05.2017 10:54 )Thermoman schrieb:  Was hältst du davon eine große globale Variable anzulegen
Warnung1WackoIwillAhrg1 - kurz: nix.

Zitat:wo ist hier eventuell der Nachteil
Erstens:
Je größer, desto schlechter. Mit größer meinst du bestimmt einen Cluster, bestehend aus allen möglichen Elementen.

Zweitens:
Anfällig für RaceConditions. Denksportaufgabe: Die Globale Variable muss ja irgendwann einmal geändert werden. Zum Ändern müssen die Daten ausgelesen ("Variable lesen"), mittels eines Datenflusses weitergeführt und irgendwie manipuliert, und schließlich wieder geschrieben werden ("Variable schreiben"). Was passiert, wenn genau in dem Moment, wenn sich die Daten im Fluss befinden, jemand anders auch genau diese Globale Variable ändern will? Das geht ohne weiteres, da LabVIEW parallel (im Sinne von Struktur), also Multitasking arbeitet. Einer von beiden wird als letzter Zurückgeschrieben haben - was ist dann mit dem Verarbeitungsergebnis des anderen?

Drittens:
Feinheiten, die ich nicht so genau kenne: Jede Instanz einer Globalen Variablen hat einen eigenen Speicherbereich (zumindest erinnere ich mich sowas mal gelesen zu haben). Bei großen GGVs wird natürlich viel Speicher verbraucht. Bedenke auch: Wenn das stimmt, werden beim Schreiben einer GV die Daten der GV auf alle Lesenden Instanzen kopiert. Ich hoffe mal, dass das in modernen LV-Version besser gemanagert wird.

Lösung:
Du musst also Vorkehrungen treffen, um zu verhindern, dass die selbe(!) Variable gleichzeitig von zwei Instanzen manipuliert werden kann. Das ist ganz einfach: Die Manipulation geschieht in einem SubVI mittels Methodenaufruf (das, was du ja schon kennst). Vorteil: Dieses SubVI kann nicht zweimal gleichzeitig ausgeführt werden, dafür nämlich sorgt LV intern. Dieses VI heißt dann FGV: "Funktionale Globale Variable".

Eine FGV besteht aus einen While-Schleife, in der sich eine Case-Sequenz befindet. Im einfachsten, also Standardfall, gilt: Die Bedingung der While-Schleife steht auf "Beenden". Die Schnittstelle des VIs ist sehr einfach: Ein(1) Ausgang mit dem Cluster der Daten. Ein(1) Eingang (strikt-typisierter) Enumarator, der die Methode angibt. Und ein(1) Eingang Variant, der unterschiedliche Daten enthalten kann, je nach Methode. Wenn man dann auch noch einen Case NONE hat (Standardmäßig Null), kann man den verwenden, um das VI aufzurufen, um lediglich die Daten am Ausgang zu bekommen, um sie am Bildschirm z.B. alle 500ms anzuzeigen. Vorteil: Man hat die Verarbeitung der Daten von der Anzeige getrennt.

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
Parallelschleifen - Thermoman - 18.05.2017, 15:45
RE: Parallelschleifen - A.Berndsen - 18.05.2017, 15:50
RE: Parallelschleifen - GerdW - 18.05.2017, 15:52
RE: Parallelschleifen - Thermoman - 18.05.2017, 16:10
RE: Parallelschleifen - IchSelbst - 18.05.2017, 16:14
RE: Parallelschleifen - Thermoman - 20.05.2017, 10:48
RE: Parallelschleifen - IchSelbst - 20.05.2017, 16:11
RE: Parallelschleifen - Thermoman - 21.05.2017, 10:54
RE: Parallelschleifen - IchSelbst - 21.05.2017 12:08
RE: Parallelschleifen - Thermoman - 22.05.2017, 07:34
RE: Parallelschleifen - IchSelbst - 23.05.2017, 08:14
RE: Parallelschleifen - A.Berndsen - 23.05.2017, 08:45

Gehe zu: