Übungsblatt 11a
Conway's Game of Life - Revisited |
PI-1 2008/09
|
Lernziele: GUI/Graphics, Multi-Threading, Gaming.
Ihre Aufgabe besteht darin, ihre existierende Implementierung
des “Game of Life” zu parallelisieren. In dieser neuen Version soll das
Spielfeld durch T Threads aktualisiert werden. Auf einem Multi-Prozessorsystem
kann somit die Aktualisierung des Spielfeldes beschleunigt werden. Um den Effekt
auch auf Ein-Prozessorsystemen zu erhalten, müssen Sie die Aktualisierung einer
Zelle durch einen Thread künstlich verzögern (sleep()). Bei einer Vielzahl von
Threads kommt es so zu einer Überlappung dieser Verzögerungen, wodurch die
Zellaktualisierungen nebenläufig (concurrent) ausgeführt werden.
Hinweise
- Bei einem Spielfeld bestehend aus N Zeilen könnten Sie
z.B. N/T aufeinander folgende Zeilen einem Thread zuordnen (Achtung:
Rundungen).
- Beachten Sie, dass die Aktualisierung des Spielfeldes
rundenbasiert erfolgt. D.h. es muss sichergestellt werden, dass die
Feldaktualisierungen der einzelnen Threads am Ende der Runde erfolgen. Dies
kann im einfachsten Falle mit Hilfe einer Synchronisation erfolgen. Im Falle
von Java empfiehlt sich die Verwendung eines Barrier-Objektes (siehe Bsp.
aus
http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/CyclicBarrier.html
- Wichtig: Sie dürfen die Ausführung
unter keinen Umständen serialisieren!! Auf einem Multi-Prozessorsystem
sollte die parallele Ausführung mehrerer Threads möglich sein.