© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:

Slides:



Advertisements
Ähnliche Präsentationen
Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther.
Advertisements

Vertieferseminar Geoinformation WS 02/03
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
10.2 Wechselseitiger Ausschluss in Hardware
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Semaphoren –
1 Spezielle Packages des Java SDK (1.4) java.nio.
der Universität Oldenburg
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
HG13_ Herzgen, Jung & Lorkowski
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 7.2 Dining philosophers problem
Threads Richard Göbel.
Java: Objektorientierte Programmierung
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
Nebenläufige Programmierung
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
V12 Highscores WS 2009/10 Simulation und 3D Programmierung Prof. Dr. Manfred Thaller Martina Hänsel.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
OpenMP Präsentation im Rahmen des Seminars
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
4.4.2 Sperrverfahren (9/18) Regeln für das Setzen von Sperren
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
Java Threads Sebastian Werler
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Plattformunabhängige Programmiersprache
Steuerung externer Komponenten über ein USB-Interface.
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Prozess-synchronisation
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Thread Synchronisation in JAVA
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
23-Jun-05 Bernhard Tellenbach
Systemsoftware und Betriebssysteme
Interprozess- kommunikation (IPC)
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
Mehrbenutzerzugriff auf GIS-Daten
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
2. Kommunikation und Synchronisation von Prozessen 2
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Parallel Programming Semaphores / Reader - Writer - Lock
Einführung in die OOP in Java
Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
1 Einführung in Qt von Stephan Hellenbrandt. 2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
C++ FÜR cOMPUTERSPIELENTWICKLER
Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer.
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
© Tobias Bäuerle, Virtuelle Präsenz WS10/11, Uni Ulm Übung Second Life Techniken.
Der kritische Abschnitt
WS 2001/2002 Mehrbenutzerzugriff auf GIS-Daten
Netzwerk - Programmierung
Objects first mit BlueJ und Greenfoot
 Präsentation transkript:

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer: Prof. Dr. rer. nat. Bodo Kraft Zweitbetreuer: Dipl.-Math. (FH) Uli Schmidt

© 2008 TravelTainment The Amadeus Leisure Group 2 Thread-Programmierung im Qt-Framework Inhalt:  Was ist ein Thread  Wofür werden Threads benutzt  Probleme, die Threads mit sich bringen  Das Qt-Framework  Die Qt-Basisklasse QObject  Die Klassenhierarchie  Speicherverwaltung  Die Klasse QThread  Synchronisation  Kommunikation  Model-View-Architektur in Qt  Fazit

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework  Ausführungsstrang  Teilt Speicherbereich  Vier Zustände  inaktiv  rechenbereit  blockiert  laufend  Echt- oder pseudo- parallele Ausführung  Erzeugt Verwaltungs- Over-Head 3 Was ist ein Thread: Prozess GUI-Thread Stack Thread2 Stack Heap Zugriff

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework  Zwei Klassen  Speicherzugriff  Warten auf anderen Thread 4 Probleme, die Threads mit sich bringen:  Rechenintensive und parallelisierbare Probleme  GUI-Entwicklung Wofür werden Threads benutzt:

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework  Klasse 2: warten auf Thread  Anhalten von Threads  Verklemmung 5 Probleme Deadlock:  Klasse 1: Speicherzugriff  Abhängig von einzelnen Operationen Problem Race Condition:

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 6 Das Qt-Framework:  Framework zur GUI-Entwicklung  Zusätzlich Nicht-GUI-Klassen  z.B. Netzwerkklassen  Keine zusätzlichen Bibliotheken erforderlich Die Qt-Basisklasse QObject:  Automatische Speicherverwaltung  Signal-Slot-Konzept

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 7 Die Klassenhierarchie:  Klassen von Basisklassen abgeleitet  Mehrfachvererbung

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 8 Speicherverwaltung:  Automatische Speicherverwaltung durch  QObject  Klassenhierarchie  Baumstruktur an Eltern-Kind-Beziehungen  Objekt löscht Nachkommen

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 9 Die Klasse QThread:  repräsentiert Threads  Erleichtert Umgang  QThreads verwenden Heap gemeinsam -> Synchronisation Erstellen eigener QThreads:

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 10 Qt-Klassen in QThreads verwenden:  Thread nicht als Eltern-Objekt angeben  Keine automatische Speicherverwaltung  Objekte explizit löschen Synchronisation:  Kritischer Abschnitt: Bereich mit globalen Variablen  Zugriffsynchronisation kritischer Abschnitte  Daten-Konsistenz sicherstellen

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 11 Synchronisation durch QMutex: Die Hilfsklasse QMutexLocker:  Umschließt kritischen Bereich  lock() -> sperrt kritischen Abschnitt  unlock() -> hebt Sperre auf  Konstruktor erhält QMutex-Objekt  Konstruktor -> sperrt kritischen Abschnitt  Destruktor -> hebt Sperre auf Synchronisation durch QSemaphor:  Konstruktor erhält Anzahl Ressourcen  acquire( ) -> dekrementiert evtl. Blockierung  release( ) -> inkrementiert

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 12 Synchronisation durch QReadWriteLock:  Synchronisiert Lese- u. Schreibzugriff  lockForRead() -> sperrt Schreibzugriff  lockForWrite() -> sperrt Lese- u. Schreibzugriff  unlock() -> hebt letzte Sperre auf Synchronisation durch QWaitCondition:  Primitive Kommunikation  wait() -> blockiert Thread  Argument: gesperrtes QMutex-Objekt  wakeOne() -> reaktiviert einen Thread  wakeAll() -> reaktiviert alle Threads

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 13 Kommunikation:  Signal-Slot-Konzept  QObject-Nachkommen  Makro Q_OBJECT setzen  Signals & Slots explizit kennzeichnen  Argumentlisten identisch oder Slot besitzt weniger Argumente

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 14 Kommunikation zwischen QThreads:  Gemeinsame Variablen  Synchronisationsmechanismen  Signal-Slot-Konzept Kommunikation mit Hauptthread:  Darf nur GUI updaten  Nur Signal-Slot-Konzept geeignet  Verbindung zu Objekten des Hauptthreads

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 15 Model-View-Architektur: Das Delegate-Objekt:  Element der View  Ändert Model über View  Definiert genau Anzeige  Wichtige Methoden: createEditor(), setEditorData(), setModelData() und paint() Model View1 View2 Delegate1Delegate2 Rendering Editing

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 16 Model-View-Architektur:

© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework 17 Fazit:  Positiv:  Sehr mächtiges Framework  Leicht verständliche Kommunikationsmechanismen  Bietet viel Funktionalität  Plattformunabhängig  Sehr gut dokumentiert  Negativ:  Großer Aufwand beim Anlegen von Klassen  Ungeeignet für Verarbeitung großer Datenmengen z.B. QString  Programm benötigt immer Bibliotheken von Qt

© 2008 TravelTainment The Amadeus Leisure Group 18 Vielen Dank

© 2008 TravelTainment The Amadeus Leisure Group 19 Model View1 View2 Delegate1Delegate2 Rendering Editing