Untitled
Untitled
Untitled
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3.1 Parallelität auf Schleifenebene 35<br />
Schrittweite aus inkrement berechenbar sein und darf<br />
sich innerhalb des Schleifenkörpers auch nicht ändern.<br />
Dies hat Auswirkungen darauf, welche Konstrukte, die<br />
den Kontrollfluss innerhalb des Programms verändern<br />
könnten, innerhalb der Schleife erlaubt sind. Weder darf<br />
die Zählvariable innerhalb der Schleife verändert werden,<br />
noch darf die Schleife vorzeitig durch eine break-<br />
Anweisung verlassen werden. Die Schleife darf also nur<br />
einen Eintrittspunkt an ihrem Anfang und einen Ausgangspunkt<br />
an ihrem Ende aufweisen. Mittels continue<br />
vorzeitig zur nächsten Iteration überzugehen oder das<br />
gesamte Programm mit exit zu verlassen, ist dagegen<br />
gestattet. Ein Thread in einem C++-Programm darf<br />
nur dann mit throw innerhalb der Schleife eine Ausnahme<br />
werfen, solange diese auch durch einen try-Block<br />
innerhalb der Schleife vom selben Thread wieder abgefangen<br />
wird; die Ausnahme kann nicht erst außerhalb<br />
der Schleife abgefangen werden.<br />
• Als Vergleichsoperator op innerhalb des Booleschen Ausdrucks<br />
index op test sind nur = erlaubt.<br />
• startwert und endwert können beliebige numerische<br />
Ausdrücke sein, solange sich deren Wert während der<br />
Schleifenausführung nicht ändert.<br />
• inkrement muss den Wert der Zählvariablen in jedem<br />
Schleifendurchlauf um denselben Wert verändern und<br />
darf dabei nur die Operatoren ++, −−, +=, -= und =<br />
verwenden. Multiplikation oder Division, auch auf der<br />
rechten Seite einer Zuweisung mit = (wie etwa index =<br />
index * 2), sind nicht erlaubt.<br />
Am Ende einer parallelisierten Schleife steht eine implizite<br />
Barriere, an der alle Threads aufeinander warten, bevor<br />
sie mit der Ausführung des restlichen Codes im parallelen<br />
Abschnitt fortfahren. Möchte man diese implizite Synchro-