Ruprecht-Karls-Universität Heidelberg

This is an archive of our old website and not updated anymore

The current website can be found at conan.iwr.uni-heidelberg.de

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!
Nun kann die Applikation mit make übersetzt werden.


Revision: 380     Letzte Änderung: 2010-02-18 18