Verständnisfrage Signal und Thread

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Verständnisfrage Signal und Thread

Beitrag von anno1988 »

Hallo zusammen,

ich habe eine Verständnisfrage zu Signals und Threads.

Angenommen ich führe in einer Methode in einem Thread ein Signal aus.

Das Signal "finished()" habe ich folgender maßen mit "deleteLater()" verbunden:

Code: Alles auswählen

connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
Beispiel in der Thread Klasse:

Code: Alles auswählen


void MyThread::tueIrgendWas() {

  emit dasSigalAufrufen(QString wert);

  this->quit();

}

Kann es dann zu Problemen kommen, wenn der Slot die Daten des Signals annimmt, der Thread aber schon gelöscht wurde oder ist das dem Slot egal?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Verständnisfrage Signal und Thread

Beitrag von solarix »

anno1988 hat geschrieben: Kann es dann zu Problemen kommen, wenn der Slot die Daten des Signals annimmt, der Thread aber schon gelöscht wurde oder ist das dem Slot egal?
Und wie soll in deinem Code denn diese Reihenfolge zustande kommen?

Ich hoffe ausserdem, du weisst, was du tust.. denn für den obigen Code brauchst du möglicherweise 2x "moveToThread()".. das erste damit allfällige Slots im Threadkontext ausgeführt werden ("tueIrgendWas"?), der 2. um die Threadinstanz wieder zurück zur MainLoop zu verschieben, damit "deleteLater()" in der MainLoop hinterlegt wird.

Ein weiterer Grund, warum man QThreads nicht ableiten sollte. Diese Methode http://labs.qt.nokia.com/2006/12/04/thr ... e-headache ist besser..
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

ok danke, erde ich beachten.

aber da steht noch ein Kommentar http://labs.qt.nokia.com/2006/12/04/thr ... /#comments

Laut Kommentar kann man nur 1:1 Relationen aufbauen, aber wie bekommt man denn da eine n:m Relation hin?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Hab ich auch schon gelesen, aber der Kommentar macht IMHO keinen Sinn.. denn

1. gibt es bezüglich Art und Anzahl Connections in der vorgestellten Variante keinen Unterschied zur QThread-Ableitung und

2. kann ein Qt-Signal beliebig viele Empfänger haben.. ich verstehe daher nicht so ganz, welchen Anwendungsfall man damit nicht abdecken könnte..
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

dieses Concrete Beispiel : Producer->Consumer ist nur 1:1 .. vermute ich mal ist gemeint.
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten