LabVIEWForum.de
True und True = False?? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: True und True = False?? (/Thread-True-und-True-False)

Seiten: 1 2


RE: True und True = False?? - Kiesch - 04.10.2013 17:40

Da die Queue vermutlich einfach nur irgendwas gesendet kriegt zum stoppen dürfte das passieren, die Leitung oben ist dann noch False (sonst würde ja gestoppt). Die andere ist True (die aus der Queue) 31 wird dann natürlich auch false.

Nächster Durchlauf: Die Lokale Variable wird sofort gelesen. Die Queue nicht, da die ja nicht nochmal was gesendet kriegt. Entsprechend sind dann scheinbar beide Eingänge True und der Ausgang falsch (da der aus der Queue noch nicht aktualisiert ist und der Ausgang des UND deswegen ebenfalls nicht). Mit dem Haltepunkt sollte man btw. genau das Rekonstruieren können (verstehe nicht wieso nur wegen Haltepunkt das plötzlich funktionieren sollte - das verhalten müsste eigentlich (zumindest teilweise) das gleiche sein da die Racing Condition nicht verschwindet.

Zur Erklärung: Racing Condition = Ein Control wird an einer Stelle geschrieben, an anderer ausgelesen (zum Beispiel eben über lokale Variablen). In dem Fall ist (ohne besondere Maßnahmen die das sicherstellen) nicht klar ob erst gelesen oder erst geschrieben wird. Daher: Du willst zum Beispiel "Stop" auf True setzen um anzuhalten. Dummerweise wurde vorher schon das "Stop" mit False ausgelesen (in deinem Bild sehe ich keine Datenabhängigkeit des "Stop" von irgendwas. Entsprechend wird das relativ fix nach Start des Schleifendurchlaufs schon ausgelesen werden (weswegen du reproduzierbar das von dir beobachtet Verhalten siehst). Kannst das ja mal mit dem Highlight modus oder Schritt für Schritt ausführung anschauen, da müsste man das auch sehen. Entsprechend kann frühestens im nächsten Durchlauf das True gelesen werden das du eigentlich haben willst.

Wozu du das Stop aber brauchst erschließt sich mir nicht ganz. Es sollte ja an sich reichen einfach über die Queue zu stoppen, dann vermeidet man das Problem von vorneherein.