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.

26 2 Das OpenMP-Ausführungsmodell<br />

Führt man das Programm nach erfolgreicher Compilierung<br />

mit einem OpenMP-fähigen Compiler und aktivierter<br />

OpenMP-Option aus, so könnte die Ausgabe auf einem<br />

System mit vier Prozessoren etwa wie folgt aussehen:<br />

Anzahl Prozessoren: 4<br />

Thread 0 von 4 sagt "Hallo Welt!"<br />

Thread 2 von 4 sagt "Hallo Welt!"<br />

Thread 3 von 4 sagt "Hallo Welt!"<br />

Thread 1 von 4 sagt "Hallo Welt!"<br />

Fertig.<br />

Eine sehr wichtige Beobachtung an dieser Stelle ist, dass die<br />

tatsächliche Reihenfolge, in der die Threads auf die Ausgabe<br />

schreiben, bei jeder Programmausführung anders lauten<br />

kann. Jede mögliche Permutation der Zeilenausgabe kann<br />

auftreten, da sich nicht vorhersagen lässt, in welchem zeitlichen<br />

Verhältnis zueinander die Threads ausgeführt werden.<br />

Man sagt, die Threads sind untereinander nicht synchronisiert.<br />

Im obigen Programm konkurrieren mehrere Threads gleichzeitig<br />

um eine gemeinsam genutzte Resource, die Standardausgabe.<br />

Für die Funktion printf() der C-Laufzeitumgebung<br />

gilt üblicherweise, dass sie ohne Unterbrechung durch<br />

Aufrufe dergleichen Funktion in anderen Threads desselben<br />

Prozesses ausgeführt wird, auch wenn dies von keinem<br />

Standard explizit gefordert wird. Daher erhielt man in dem<br />

Beispiel 2.1 eine wohlgeformte Ausgabe, denn jeder Thread<br />

gab eine komplette Zeile mit nur einer einzelnen printf()-<br />

Anweisung aus. Wäre pro Thread die Ausgabe einer Zeile<br />

auf mehrere printf() wie in Listing 2.2 verteilt worden, so<br />

könnte die Ausgabe auch folgende Form annehmen:<br />

Anzahl Prozessoren: 4<br />

Thread Thread Thread Thread 0312 von von<br />

von von 4444 sagt "Hallo, Welt!" sag

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!