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 

Race Conditions



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!

22.07.2008, 15:15 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2008 15:15 von eg.)
Beitrag #11

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Race Conditions
Na ja, ganz einfach. Bis jetzt war es nur ein Beispiel. Wenn ich aber in der oberen Schleife eine Schnittstelle auslese (z.B. RS232) und da kommen die Daten sehr selten, z.B. jede 10 Sekunden ein Datum. Dann wird dieser Flag nur jede 10 Sekunden updatet. Was macht aber die untere Schleife, die frisst die ganze CPU weg.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.07.2008, 15:38
Beitrag #12

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Race Conditions
Wieso denn? Du kannst doch im "False"-Case eine kleine Zeitverzögerung reinbauen.

Gruß Markus

' schrieb:Na ja, ganz einfach. Bis jetzt war es nur ein Beispiel. Wenn ich aber in der oberen Schleife eine Schnittstelle auslese (z.B. RS232) und da kommen die Daten sehr selten, z.B. jede 10 Sekunden ein Datum. Dann wird dieser Flag nur jede 10 Sekunden updatet. Was macht aber die untere Schleife, die frisst die ganze CPU weg.

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2008, 08:06 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2008 08:13 von IchSelbst.)
Beitrag #13

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Race Conditions
Ich hab mir mal eure Beispiele angesehen. Die sind aber nur dazu geeignet, ganz bestimmte Race Conditions zu vermeiden. So Sachen, die in Richtung Ablaufsteuerung gehen. Oder sehe ich da was falsch?

Unter Race Condition würde ich jetzt zuerst solche Sachen verstehen, wie hier bei WikiPedia beschrieben. Also z.B. das Manipulieren einer Variablen von zwei unabhängigen (While-)Tasks. Wobei die zu schützende Operation natürlich nicht nur ein Increment sein kann. Ich denke da eher an ganze Array-Operationen.

Nachtrag:
Da hängt ja ganz oben das Beispiel. Allerdings: Dieses Beispiel würde ich nicht unter Race Condition fallen lassen. So wie das Beispiel ist, kann da nämlich nichts falsch werden. Da hinkt halt die Anzeige hinterher. Was im übrigen auch beim DaqMX-Task-Auslesen so ist. Da wird ja auch nur im Raster ausgelesen, sodass die gerade bearbeiteten Daten den tatsächlichen hinterher sind.

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
23.07.2008, 09:40
Beitrag #14

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Race Conditions
Ja, stimme ich zu. Es ist nur eine Art von Race Conditions. Es gibt auch viel mehr Beispiele, wo diese auftreten können. Ich habe nun mein erstes Beispiel als bestes gefunden, das das Verhalten verständlich darstellt.
Falls jemand andere schöne Beispiele hat, bitte hier posten. Ich werde die aufsammeln und ein Tutorial dazu schreiben.

Wie gesagt, um Race Conditions zu vermeiden, nimmt man Tools aus der Synchronisationspalette. Semaphoren(wie bei Wikipedia vorgeschlagen) gehören allerdings auch dazu.

Gruß, eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2008, 09:55
Beitrag #15

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Race Conditions
' schrieb:Falls jemand andere schöne Beispiele hat, bitte hier posten.
Ich hab - leider - keine Beispiele.

Zitat:Wie gesagt, um Race Conditions zu vermeiden, nimmt man Tools aus der Synchronisationspalette.
Ja. Wenn dann so (müsste ich aber erst ankucken). Mit Variablen sowas selbst machen zu wollen, geht per se nicht. Dazu ist die Umgebung nicht geeignet. Lediglich spezielle Fälle wie solche von dir angesprochenen kann man verriegeln.

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
25.08.2010, 08:30 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2010 08:36 von deicebear.)
Beitrag #16

deicebear Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 72
Registriert seit: Jul 2010

8.5.1
2009
de_en

13
Deutschland
Race Conditions
Hallo,

da wir ja beim Thema Race Conditions sind, gibt es eine Auflistung aller Fälle, die ein solches Verursachen?
Eine Erläuterung gibt es ja hier: http://de.wikipedia.org/wiki/Race_Condition
und hier: http://www.labviewportal.eu/viewtopic.php?f=13&t=329

Schaut mal in mein PNG, was ich angehängt habe, ob die paar Variablen schon Race Conditions verursachen? Ich kenn das ja bnoch von Pascal FC oder von Microcontrollern, wenn ein Vorgang eine Variable beschreibt muss jeder weitere in eine Warteschleife bis eine Flanke zur Freigabe fällt, ich bin froh schon + und - mit LabVIEW hinzubekommen ;-D mir graut es schon davor.

Können eigentlich Race Conditions Ursache dafür sein, dass sich mein LabVIEWlv85manchmal 15 Min. lang hängt, wenn ich den Stop-Button, nach einem Programmtest, drücke? Oder auch das meine Taktuhr nicht mehr unter 300ms geht, so ein ziehmlich langsamer Programmzyklus?

Danke schonmal:)finde man kann über Race Conditions nicht genug aufgeklärt werden :-D


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.08.2010, 09:08
Beitrag #17

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Race Conditions
' schrieb:da wir ja beim Thema Race Conditions sind, gibt es eine Auflistung aller Fälle, die ein solches Verursachen?
Ist mir nicht bekannt.
Zitat:Schaut mal in mein PNG, was ich angehängt habe, ob die paar Variablen schon Race Conditions verursachen?
Ich bin der Meinung, die Verwendung der Variablen "Array" führt nicht zu ReceConditions.

Zitat:Ich kenn das ja bnoch von Pascal FC oder von Microcontrollern, wenn ein Vorgang eine Variable beschreibt muss jeder weitere in eine Warteschleife bis eine Flanke zur Freigabe fällt,
"RaceCondition" ist eher als Prinzip zu verstehen - und ist deswegen Programmiersprachen unabhängig. Programmiersprachenabhängig ist lediglich die Wahrscheinlichkeit, eine RaceCondition zu programmieren, und die Möglichkeit, sie zu umgehen. In LV werden RaceConditions vermieden, indem man Drähte zieht anstelle lokale Variablen zu erstellen.

Zitat:Können eigentlich Race Conditions Ursache dafür sein, dass sich mein LabVIEWlv85manchmal 15 Min. lang hängt, wenn ich den Stop-Button, nach einem Programmtest, drücke?
Als Auswirkung einer Auswirkung einer RaceCondition ist so was möglich.

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
25.08.2010, 11:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2010 16:55 von Lucki.)
Beitrag #18

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Race Conditions
Man kann die Variablen in 2 Schleifen am einfachsten synchronisieren, wenn man die absolute Uhr verwendet.
   
Anslonsten würde ich aber sagen: Als Lehrbeispiel zum Thema Race Condition ist das VI ungklücklich gewählt und wenig hilfreich. Daß sich voneinander unabhängige, nicht synchronisierte Schleifen ihre jeweiligen Daten - ganz gleich ob sie aus der anderen Schleife kommen oder von was weiß ich woher - immer erst bei ihren jeweiligen neuen Schleifendurchlauf aktualisieren, ist doch selbstverständlich und hat mit Wettlaufeffekten nun wirklich nichts zu tun. Der Witz an guten Beispielen zum Thems Wettlauferscheinungen ist doch, daß etwas Undefiniertes oder für den Anfänger Überraschendes passiert. Das ist hier überhaupt nicht der Fall.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.08.2010, 11:32
Beitrag #19

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Race Conditions
' schrieb:Jaja, lokale Variablen..., die halten sich nicht an den Datenfluss. Und wenn etwas weiter rechts im Blockdiagramm steht, dann wird das noch lange nicht später ausgeführt als der Code weiter links im BD.
Das war ein schöner RaceCondotions-Thread wo ein trotteliger Anfänger seine Überraschung erlebt hatWink

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.08.2010, 14:10 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2010 14:10 von deicebear.)
Beitrag #20

deicebear Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 72
Registriert seit: Jul 2010

8.5.1
2009
de_en

13
Deutschland
Race Conditions
Gibt es einen Weg festzulegen, in welcher Reihenfolge was abgearbeitet wird? Zum Beispiel in einer While-Schleife habe ich 3 Cases und 3 For Schleifen und ich lege fest, pro Zyklus soll erst Case 1, dann 2, dann 3 folgen und dann ForSchleife 3, ForSchleife 2 und zum Schluss ForSchleife 1? So etwas ist wahrscheinlich nicht möglich, oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Question Schalter deaktivieren führt zu race condition, wie umgeht man das? TpunktN 4 3.487 12.05.2021 09:18
Letzter Beitrag: TpunktN
  Race Condition Eisbär 8 5.855 02.01.2016 20:22
Letzter Beitrag: Lucki
  UDP-Steuerung (Race Condition) nurso 4 3.925 01.09.2015 14:17
Letzter Beitrag: nurso
  "Race-Conditions"?! vermeiden/beheben TSC 12 10.716 24.04.2009 14:48
Letzter Beitrag: TSC

Gehe zu: