16.08.2013 Aufrufe

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

130 KAPITEL 6. FUNKTIONALE BESCHREIBUNG VON BILDFOLGENPROGRAMMEN<br />

set()<br />

add<br />

prop<br />

Aufruf weiterer<br />

Funktoren aus<br />

Abhängigkeitsliste<br />

S<br />

F<br />

set()<br />

add<br />

prop<br />

S<br />

G<br />

t?<br />

t?<br />

call()<br />

get ()<br />

t?<br />

get ()<br />

t?<br />

Abbruch<br />

call()<br />

get ()<br />

t?<br />

get ()<br />

t?<br />

do<br />

post<br />

J<br />

F<br />

JK S<br />

S F<br />

K<br />

G<br />

JK<br />

F<br />

pre<br />

[neuer Wert noch nicht gesetzt]<br />

pre<br />

set()<br />

add<br />

prop<br />

set()<br />

add<br />

call()<br />

prop<br />

call()<br />

(a.) (b.)<br />

S<br />

set()<br />

add<br />

prop<br />

set()<br />

add<br />

prop<br />

t?<br />

t?<br />

call()<br />

get ()<br />

t?<br />

get t? ()<br />

Abbruch<br />

call()<br />

get ()<br />

t?<br />

get ()<br />

t?<br />

do<br />

post<br />

pre<br />

[neuer Wert noch nicht gesetzt]<br />

Abbildung 6.31: Mögliches Sequenzdiagramm zur Darstellung des Kontrollflusses eines asynchron<br />

vorwärts gesteuerten Funktors: (a.) mit asynchroner ×Ø - <strong>und</strong> (b.) mit synchroner<br />

×ØÆ -Relation.<br />

Abb. 6.31 a zeigt einen möglichen asynchronen Kontrollfluß <strong>für</strong> einen einzelnen Funktor, bei<br />

dem sowohl <strong>die</strong> ×Ø - als auch <strong>die</strong> ØÖ -Relationen gesetzt sind. Da bei einem asynchronen<br />

Aufruf der Folgefunktoren <strong>die</strong> Dauer der Aktualisierung einer Sequenz im wesentlichen durch<br />

<strong>die</strong> Verwaltungsoperationen <strong>für</strong> das Einfügen des neuen Datums in <strong>die</strong> interne Werteliste sowie<br />

das reine Anstoßen der Funktoren bestimmt wird, <strong>und</strong> damit sehr kurz ist, kann auf <strong>die</strong> asynchrone<br />

×Ø -Relation auch verzichtet <strong>und</strong> <strong>die</strong>se durch <strong>die</strong> synchrone Variante ×ØÆ ersetzt<br />

werden. Die Berechnung der Sequenzwerte <strong>und</strong> ihr Einfügen in <strong>die</strong> entsprechenden Sequenzen<br />

geschieht dann in ein <strong>und</strong> demselben Programmfaden. Abb. 6.31 b zeigt das dazugehörige<br />

Sequenzdiagramm mit einem entsprechenden Kontrollfluß.<br />

Wie im Abschnitt 6.4.6 bereits ausführlich diskutiert wurde, ist <strong>die</strong> Aufrufreihenfolge der<br />

einzelnen Aktionen nicht deterministisch, d.h. <strong>die</strong> in Abb. 6.31 dargstellten Sequenzdiagramme<br />

stellen jeweils nur einen möglichen Kontrollfluß dar. Dabei ist zu beachten, daß ein Funktor<br />

auch dann asynchron angesteuert werden kann, wenn <strong>die</strong> unmittelbar angrenzenden Relationen<br />

synchron definiert sind. Um sich mit asynchronen Steuerungsmechanismen befassen zu müssen,<br />

reicht es, daß zwei der Eingangsdaten eines Funktors parallel in unterschiedlichen Threads<br />

bereitgestellt werden.<br />

Die Zeitpunkte der verschiedenen Aktionen können sich beliebig verschieben, so daß sich<br />

zum einen <strong>die</strong> Aufrufreihenfolgen ändern <strong>und</strong> zum anderen mehrere Aktionen zusammenfallen<br />

können. Daher ist im folgenden <strong>die</strong> Frage zu beantworten, welche Programm- oder <strong>Daten</strong>be-<br />

S<br />

pre<br />

set()<br />

add<br />

prop<br />

S<br />

J<br />

call()<br />

set()<br />

add<br />

prop<br />

S<br />

K<br />

call()

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!