Ü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.