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 eine QT-basierte Variante.
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.
- Semaphore Eine Semaphore aufbauend auf einer Condition.
Einige beigefügte Beispiele
- examples.cc Einige Beispiele zur Anwedung der ThreadTools.
- 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!