funktionale globale variablen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: funktionale globale variablen (/Thread-funktionale-globale-variablen--8521) |
funktionale globale variablen - ben8119 - 22.07.2008 07:45 Hallo zusammen, ich habe schon an verschiedenen stelllen von den vorzügen von funktionalen globalen variablen gehört. Zum Beispiel, dass dabei keine race conditions entstehen können. Und genau diesen Punkt hab ich noch nicht so richtig verstanden. Wieso ist das so? Wenn ich an einer Stelle eine funtkionale globale variable initialisierre und an anderer Stelle diese lesen will, wodurch ist dann die Abfolge geregelt? Ich hab es jetzt so gelöst dass ich der funkt. glob. var. einfach einen Variant-Eingang definiert habe, und dann irgendeine in der Nähe liegende Datenflusslinie daran binde, einfach nur um die Ablauffolge zu steuern. Gibt es hierfür auch eine elegantere Lösung? Viele Grüße ben funktionale globale variablen - IchSelbst - 22.07.2008 08:22 ' schrieb:Wieso ist das so? Wenn ich an einer Stelle eine funtkionale globale variable initialisierre und an anderer Stelle diese lesen will, wodurch ist dann die Abfolge geregelt?Ganz wichtig ist schon mal die Einbindung in einen Datenfluß. Dieses "Verfahren" ist Grundbestandteil einer LV-Programmierung. Durch diese Datenflußeinbindung wird nämlich eine Sequenzierung generiert. Wie du den Datenfluß machst, ob mit einem Variant-Ein/Ausgang oder wie vorgesehen mit dem Errorcluster ist letztlich egal. Außerdem haben VIs eine "Aufrufsperre während der eigenen Laufzeit". Solange ein VI läuft, wird es nicht ein zweites mal quasi parallel geöffnet (es sei denn es ist als invariant deklariert). funktionale globale variablen - ben8119 - 22.07.2008 11:35 Hallo, vielen Dank, deine Antwort hat mir sehr weitergeholfen. Vielleicht darf ich daran noch eine weitere Frage anschließen. Angenommen ich habe eine State Machine mit Warteschlange, mehrere VISA-Applikationen und die funktionalen globalen Variablen nimmt man dann ein Errorverbindungslinie für alles, oder ist es üblich mehrere Errorclusters zu verwenden? Gruß funktionale globale variablen - IchSelbst - 22.07.2008 12:10 ' schrieb:nimmt man dann ein Errorverbindungslinie für alles, oder ist es üblich mehrere Errorclusters zu verwenden?Eine für alles. Das Problem ist folgendes: Tritt in einem Ablauf - und eine Statemachine ist nichts weiter als ein Ablauf - an einen bestimmten Stelle ein Fehler auf, so muss diese Information an alle nächsten Programmteile weitergeleitet werden, weil diese nämlich auf grund des Fehlers bestimmte Sachen machen müssen oder eben nicht machen sollen. Im einfachsten Falle geht dann in einem SubVI der Errorcluster auf eine Case-Sequenz. Nur wenn kein Fehler anliegt, wird das SubVI ausgeführt. Ansonsten wird das SubVI lediglich beendet. Benutzt du nicht den Errorcluster zur Fehlerweiterleitung, kann das irgendwann mal zu ablaufspezifischen Fehlern führen. Das Verwenden des Errorclusters kann also als Folge des Datenflußprinzips als solches gesehen werden. Nichtsdestoweniger kannst du mehere Errorcluster zur Sequenzierung verwendet oder auch andere Signale. Der Errorcluster ist da halt ideal geeignet. funktionale globale variablen - ben8119 - 23.07.2008 07:38 ' schrieb:Eine für alles. Das macht Sinn. Super, vielen Dank. |