Fragen zu QThread und QMutex

Alles rund um die Programmierung mit Qt
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Frei nach dem Motto 'Hauptsaches geht irgendwie'... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

nicht gleich beleidigt sein :wink: .. Christian meint folgendes:

exec() ist ja bereits ein loop.. deiner wird also gar nicht benötigt.. Du musst nur dafür sorgen, dass entsprechende Events ausgelöst werden. Eine simple Lösung wäre z.B. eine Zustandsmaschine über dein Flag:

Code: Alles auswählen

void Com::handleState()
{
 switch (flag) {
   case INIT :
          stateInit()); // udpSocket->writeDatagram("10", Q....
           break;
   case NOTHING:
           break;
  }
}

void Com::run()
{
    ...
    connect(timer, SIGNAL(timeout()), this, SLOT(handleState()));
    timer->start(200);
    exec();
} 
hth..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

... oder einfach die beiden 'states' als Slots definieren und von aussen per signal-slot-Verbindung auslösen. Das Flag von einem anderen Thread aus zu modifizieren ist nicht wirklich gut. Zumal es nicht per Mutex abgesichert ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Apollinaris
Beiträge: 22
Registriert: 24. April 2009 13:11

Beitrag von Apollinaris »

Ich werde nicht beleidigt, kann schon verstehen, wenn euch meine blöden Fragen nerven. Das ist auch nicht mein Motto "Hauptsaches geht irgendwie". Bin noch ein QT Anfänger und möchte nur dazulernen.

Soweit läuft erstmal alles, wie ich es mir vorstelle. Ich werde jetzt weiterhin testen und probieren. Vielen Dank euch beiden für die schnelle Hilfe.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Christian81 hat geschrieben:Zumal es nicht per Mutex abgesichert ist.
Sollte auf den Plattformen auf denen der TE unterwegs ist problemlos funktionieren.
Antworten