Download
threadtools.zip
In der Linux-Konsole entpacken mit
unzip threadtools.zip
.
Hinweise zur den Threadtools
Die Threadtools stellen Werkzeuge zum Thread-Handling, Klassen, die die PThread-Funktionalität verpacken und einige Anwendungs-Beispiele bereit. Die wichtigste Klasse ist
BasicThread.
Sie ersetzt die
Klasse ActiveObject
aus der Vorlesung.
Übrigens gibt es ähnliche objektorientierte Implementierungen für die Threads wie die BasicThreads/ActiveObejcts aus der Vorlesung. Von Nokia/Trolltech gibts es beispielsweise hier eine QT-basierte Variante mit einigen Beispielen. Der angegebe Link zeigt etwa auf ein Consumer-Producer-Problem implementiert mit den Trolltech-Threads.
Die wichtigsten Klassen
- BasicThread Die ActiveObjects aus der Vorlesung.
- Mutex Verpackt einen PThread-Mutex.
- Condition Verpackt eine PThread-Condition.
- Flag Ein Flag, das das Warten auf einen anderen Prozess erzwingt.
- Barrier Eine Barriere für eine feste Anzahl von Prozessen.
- Semaphor Eine Semaphore aufbauend auf einer Condition.
Einige beigefügte Beispiele
- scalarproduct.cc Thread-parallele Berechnung eines Skalarprodukts.
- peterson.cc Implementierung des Peterson-Algorithmus mit BasicThreads.
Erstellen eigener Applikationen
Verwendet werden können alle ThreadTools durch Inkludieren der Datei tt.hh. Zum Übersetzen eigener Applikationen müssen diese im beigefügten Makefile eintragen werden:
- Eine Orientierung bieten die anderen Ziele, z.B. PETERSON_APPL. Dieses Beispiel implementiert den Peterson-Algorithmus mit BasicThreads.
- Zunächst muss die Applikation definiert und dem Ziel all hinzugefügt
werden:
MYAPPL = myapp MYAPPL_OBJECTS = myapp.o basicthread.o semaphore.o condition.o \ mutex.o barrier.o flag.o ... all : ... ${MYAPPL}
-
Die Apllikation wird vermutlich einige Abhängigkeiten von den anderen
Teilen haben:
${MYAPPL} : ${MYAPPL_OBJECTS} Makefile ${LINK} ${LLDFLAGS} -o ${EXAMPLE_APPL} ${EXAMPLE_OBJECTS} ${LIBS}
- Achtung: In Makefiles dürfen zum Einrücken niemals Leerzeichen, sondern nur Tabs verwendet werden!