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 

Ausführungsreihenfolge?



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.01.2012, 16:05
Beitrag #1

Werner Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

8.6
-
de

43298
Deutschland
Ausführungsreihenfolge?
Hallo zusammen,

Ich versuche möglichst einfach zu Beginn eines Programmablaufs den FIFO zu löschen.
Im Bild habe ich die beiden interssanten Blockschaltbilder zusammengefasst. Im unteren Teil lese ich so lange aus dem FIFO bis ich einen Timeout bekomme. Dann setze ich das Flag "FIFO_clear", welches ich vorher gesetzt habe um diesen Vorgang zu starten, wieder auf false. In meinem eigentlich Programmablauf bleibe ich solange im Zustand Init bis dieses Flag auf false steht. Ich setze aber im gleichen State dieses Flag erst auf true. Funktioniert dieses? Wird also immer erst das flag auf true gesetzt bevor es ausgelesen wird? Hat jemand eine sauberere genauso einfache Lösung? Ich wollte nicht extra einen weiteren State einführen.

Danke


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

Werner Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

8.6
-
de

43298
Deutschland
RE: Ausführungsreihenfolge?
Hallo,
ich hatte gerade eine andere Idee, einfach die Clear Methode des Fifos aufrufen. Leider bekomme ich dann die Fehlermeldung "FIFO Clear ... : method not supported".
Wieso kann ich diese Funktion nicht nutzen?
Gruß


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2012, 18:30
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ausführungsreihenfolge?
Hallo Werner,

Zitat:Wird also immer erst das flag auf true gesetzt bevor es ausgelesen wird?
Hast du das mit dem Datenfluss und der parallelen Ausführung unabhängiger Codeteile schon mal verinnerlicht? Und dir angelesen, was eine Race-Condition ist?

Zitat:Ich setze aber im gleichen State dieses Flag erst auf true. Funktioniert dieses?
Jein. Mal ja, mal nein - wie das eben so ist bei Race-Conditions...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2012, 19:24
Beitrag #4

Werner Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

8.6
-
de

43298
Deutschland
RE: Ausführungsreihenfolge?
Hallo,
mir ist schon klar was Race-Conditions sind und mir war auch klar, dass dies wahrscheinlich nicht immer funktioniert. Deswegen habe ich auch nachgefragt, ob jemand dazu eine wenig aufwendige Lösung hat.
Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2012, 19:32
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ausführungsreihenfolge?
Hallo Werner,

wenn du wirklich im gleichen State das Flag setzen und lesen willst, könntest du eine Sequenzstruktur einsetzen.

Aber:
Was soll es bringen? Erst setzt du das Flag, dann fragst du es ab und entscheidest: "diesen State nochmal durchführen"! Bei der nächsten Iteration setzt du das Flag (und überschriebst wahrscheinlich das Ergebnis deiner anderen Schleife) und fragst es dann erneut ab - um eine weitere Iteration zu starten usw. usf. bis in alle Ewigkeit...
Lösung:
Mach aus einem zwei States...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2012, 09:36
Beitrag #6

Hook1986 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 149
Registriert seit: Jan 2012

2010
2011
DE_EN


Deutschland
RE: Ausführungsreihenfolge?
Also, wenn ich den Sinn deiner beiden Schleifen richtig verstehe, dann willst du doch einfach slange den INIT-Case ausführen, bis dein FIFO leer ist? Dann kannst du auch einfach in einem INIT-Case die "While-Schliefe" mit dem auslesen reinbauen und fertig ist es. Dann wird der INIT-Case einmal ausgeführt und endet, wenn das FIFO leer ist.

MfG Carsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: