Ich habe ein paar generelle Fragen zu QThreads und QEventLoops, da ich ein Programm mit mehreren Threads schreibe.
Dieses Programm hat 3 Knöpfe, die ein Starten/Fortsetzen, Pausieren und Stoppen eines Threads ermöglichen sollen.
- Wenn ich "Start" drücke, rufe ich QThread::run() auf.
- Wenn ich pausieren will, weiß ich nicht, wie ich z.B. mit QThread::wait() umgehen soll, da diese Funktion ja eine Zeit übernimmt. Zur Laufzeit weiß ich aber nicht, wie lange es dauert, bis wieder gestartet bzw. gestoppt wird.
- Zum Stoppen habe ich gedacht, dass mir die Funktion QThread::quit() helfen kann, jetzt lese ich aber in der Doku zu QThread folgendes:
Nun, das Problem ist nicht nur, dass ich damit nichts anzufangen weiß und mir die Doku zu QEventLoop nicht hilft. Nein, das Problem ist, dass der Thread nicht einfach abgebaut werden darf, da in ihm dynamisch Speicher allokiert wurde und folglich vor einem Beenden dieser Speicher wieder freigegeben werden muss.QT Doku hat geschrieben:This function does nothing if the thread does not have an event loop.
Und ich freue mich, dass diese QT-Gemeinde so viele nette Mitglieder hat, ganz im Ernst!
Ciao
Ergänzung:
Bisher habe ich zum Pausieren einfach eine boolsche Variable (pause) auf true gesetzt. An einer frequentiell aufgerufenden Stelle im Thread wurde der Thread dann so "eingeschhläfert":
Code: Alles auswählen
while( pause ) sleep(1);