Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
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()