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!

25.08.2010, 19:12
Beitrag #31

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Race Conditions
Da wär ich mir nicht sicher, denn schließlich startet die RT im Idealfall für jede Schleife einen eigenen Thread, und der wird vom OS gesteuert.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.08.2010, 19:14
Beitrag #32

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Race Conditions
' schrieb:Aber kann das wirklch passieren, wenn die For-Schleife gar kein Wait enthält? In einem Buch habe ich gelesen - und so etwas steht auch in der Hilfe zum Wait-VI - daß, wenn man wünscht, daß die CPU während der Ausführung einer Schleife gegebenenfalls die Kontrolle abgeben soll, man ein Wait mit Time=0 in die Schleife platzieren soll.
In Büchern steht viel.

"Dass die CPU ..." impliziert, dass der Prozess, der die FOR-Schleife enthält, die CPU für sich beansprucht. Dem sollte aber nicht so sein. Die CPU sollte alleine dem Betriebssystem unterliegen. Wenn das Betriebssystem also meint, es müsste jetzt ein Timesharing machen, wird der aktuelle Prozess unterbrochen, wo er gerade steht. Und steht der innerhalb einer FOR-Schleife, so wird die FOR-Schleife unterbrochen. (Diese meine Aussage impliziert nun aber, dass LV sich nicht so weit in das Betriebssystem gebohrt hat, dass es das Timesharing des Betriebssystems nicht unterdrückt. Und auch Seiteneffekte durch Multicore lass ich jetzt mal weg).

Was für die CPU gilt, gilt natürlich auch für die parallelen Tasks innerhalb von LabVIEW: Laufen mehrere Tasks parallel, macht hier das "LV-Timesharing-System" mit den Tasks genau das selbe wie das BS mit den Prozessen auf der CPU: While-Schleifen können an beliebigen Stellen unterbrochen werden.

Die Frage ist nun tatsächlich, ob dieses "Timesharing" auch für "parallele Datenflüsse" innerhalb eines Blockes gilt, also z.B. für eine FOR-Schleife, der eine CASE-Struktur parallel ist. Es anzunehmen, schadet nicht.

Das Problem bei diesem Beispiel für RaceCondition liegt in der Wahrscheinlichkeit, dass FOR-Schleife und Case-Sequenz tatsächlich zur gleichen Zeit zur Ausführung kommen. Nur dann, wenn der "Compiler" das Programm genau so übersetzt, dass beide zur gleichen Zeit zur Ausführung kämen, würde der RaceCondition-Effekt sichtbar werden. Und diese Wahrscheinlichkeit ist in dem vorliegenden Beispiel eher klein.

Zitat:Im Umkehrschluß würde das aber heißen: Wenn kein Wait oder sonstige Wartezeit in der Schleife ist, dann ist die Schleife während ihrer Ausführung nicht bereit, die Programmausführung zwischenzeitlich abzugeben.
Umkehrschlüsse haben einen Nachteil: Sie sind nur gültig für Systeme, die zu 100% bekannt sind. Und wer weis schon genau, was unter BD und FP so alles passiert - außer RolfK, der das mit der FOR_Schleifenunterbrechbarkeit bestimmt genauer weis.

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, 19:23
Beitrag #33

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
Race Conditions
Naja vermutlich habt ihr recht, allerdings hat das alles auch nicht mehr viel mit dem Topic hier zu tun. Und am Ende ists ja auch egal ob LV oder WIN verursacht, dass es bei RaceConditions zu ungewollten Überholmanävern kommt!

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.08.2010, 20:11
Beitrag #34

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Race Conditions
An ungewollten Überholmanävern ist immer der Programmierer schuld Big Grin

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2010, 09:13 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2010 09:37 von deicebear.)
Beitrag #35

deicebear Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 72
Registriert seit: Jul 2010

8.5.1
2009
de_en

13
Deutschland
Race Conditions
Hui, dass sind jetzt aber viele AntwortenSmile

@dimitri - vielen Dank für den Hinweis, ich werde mich gleich drüber schlau machen wie man solche Reihenfolgen festlegt. EDIT: Finde leider keine guten Threads zum Thema "Datenfluss" direkt, aber ich schau mal in meine zwei Bücher, die ich noch da habe.

@Lucki, Dein VI habe ich erfreulicher weise sofort gedownloaded und schau es mir nachher an und freu mich schon auf den Inhalt.

@JensG - Ja genau, das Programm meine ich :-D mein LabVIEW Baby und mein erstes richtiges Programm was überhaupt mal was Sinnvolles macht, ausser die Füllstandshöhe anzuzeigen, wie wir es in der Schule als Lernbeispiel hatten;)sry, Uni :-D

@IchSelbst - Ja, also Du meinst wenn ich bei Schleifendurchlauf 50-51 meinen Booleanbutton auf True setze, dann wird mein Array gelöscht? Das ist ja auch so gewollt, denn ich speichere Offsetwerte die mit diesem Knopf genullt werden und wenn man mag, neu gesetzt werden können. Oder meinst Du das da automatisch ein True reinwandern kann, aus einer anderen Case-Abfrage? Ich hät ja auch gerne eine IF-Anweisung im LabView, aber ich finde es nicht, deswegen benutze ich Case.

@TSchAC - da hast Du Recht mit dem Datenfluss, sicher ist sicher. Lieber einbauen, als sich auf Glück zu verlassen.

Der Rest der Antworten spricht für wirklich gutes Fachwissen eurer seids, ich verstehe es, kenn mich aber nicht gut genugt aus um da mit zureden;)Was mich freuen würde, wäre in einem Thread der Race Condition heisst, wenn hier auch zig "Race Condition" - Beispiele samt Lösung zu finden wären. Also wenn ihr mal auf eins stoßt und es auch noch gelöst habt ;-D immer rein damitSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2010, 09:21
Beitrag #36

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
Race Conditions
' schrieb:..
Was mich freuen würde, wäre in einem Thread der Race Condition heisst, wenn hier auch zig "Race Condition" - Beispiele samt Lösung zu finden wären. Also wenn ihr mal auf eins stoßt und es auch noch gelöst habt ;-D immer rein damitSmile
..
Am Ende entstehen alle RaceConditions durch das gleiche Prinzip. Wenn man das einmal verinnerlicht hat, ist es ein Leichtes

1. soclhe Fälle zu vermeiden
2. falls sie doch auftreten, sie zu finden und zu lösen!

Die Lösung ist immer ein ordentlicher Datenfluss!

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.08.2010, 09:58 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2010 10:13 von Lucki.)
Beitrag #37

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
' schrieb:Die Lösung ist immer ein ordentlicher Datenfluss!
Dem ist an sich nichts hinzuzufügen, als vielleicht dieses: Die parallele Auführung von Codeteilen, die nicht voneinander datenabhängig ist, ist das Grundkonzept von Labview und dessen hervorragendste Eigenschaft.
Gerade Anfängern ist dies Eigenschaft aber oft suspekt, da sie das einerseits von anderen Sprachen nicht kennen und andererseits - beispielweise bei solchen Forenbesuchen - immer wieder vor unerwarteten Effekten gewarnt werden.
Als Reaktion darauf versuchen sie dann, diese Eigenschaft von Labview möglichst ganz außer Kraft zu setzen. Man sieht das im Code an der exzessiven und überflüssigen Verwendung von Sequenzstrukturen - das ist geradezu die Visitenkarte, mit der sich jemand als Anfänger ausweist.
Deshalb würde ich es so formulieren: Datenflußsteuerung ist lebenswichtig, aber ebenso sollte man Labview die Freiheit gönnen, die Ausführungreihenfolge von nicht datenabhängigen Codeteilen frei zu entscheiden.
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
Question Schalter deaktivieren führt zu race condition, wie umgeht man das? TpunktN 4 3.467 12.05.2021 09:18
Letzter Beitrag: TpunktN
  Race Condition Eisbär 8 5.848 02.01.2016 20:22
Letzter Beitrag: Lucki
  UDP-Steuerung (Race Condition) nurso 4 3.890 01.09.2015 14:17
Letzter Beitrag: nurso
  "Race-Conditions"?! vermeiden/beheben TSC 12 10.658 24.04.2009 14:48
Letzter Beitrag: TSC

Gehe zu: