10.02.2013 Aufrufe

Untitled

Untitled

Untitled

MEHR ANZEIGEN
WENIGER ANZEIGEN

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-

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!