Hi, ich habe folgendes Problem: Ich habe eine Qtimer auf 3 Sekunden gesetzt. Es wird also eigentlich alle 3 Sekunden ein Signal gesendet. Das klappt auch meistens, manchmal setzt der Timer aber für etwa 20 Sekunden aus und schickt keine Signale mehr. Ich benutze mehrere Threads, das sollte aber kein Problem darstellen, oder? Was könnte das Problem sein? Irgendwelche Ideen?
Vielen Dank, Stefan
qtimer wird manchmal für längere Zeit nicht ausgelöst
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
hi, woran könnte es denn liegen, dass der Event-Loop eines Threads plötzlich für einige Zeit nicht mehr ausgeführt wird? Ich habe insgesamt 3 Threads, alles QThreads:
in meiner main funktion steht:
comThread.start();
buttonThread.start();
return a.exec();
Es ist der main-Gui-Thread der manchmal für einige Zeit nicht ausgeführt wird.
Vielen Dank, Stefan
in meiner main funktion steht:
comThread.start();
buttonThread.start();
return a.exec();
Es ist der main-Gui-Thread der manchmal für einige Zeit nicht ausgeführt wird.
Vielen Dank, Stefan
Hi,juggle hat geschrieben:Ich verstehe nicht wieso das ein Problem sein könnte. Ich habe einen GUI-Thread dessen Event-loop normalerweise funktioniert aber manchmal für einige Zeit aussetzt. Die anderen Threads haben gar keinen Event-Loop, denn sie benötigen keinen.
Grüße Stefan
ein QTimer setzt nicht grundlos aus. Das kann eigentlich nur passieren, wenn irgendetwas am GUI-Thread längere Operationen ausführt, denn der Timer kann, wie weiter oben bereits gesagt, nur auslösen, wenn es der GUI-Thread in den EventLoop schafft.
Irgendetwas muss also den GUI-Thread blockieren für längere Zeit. Und da du erwähntest mit einigen Threads zu arbeiten ist es nahe liegend, dass es damit zu tun hat. Wartest du z.B. aus Versehen im GUI-Thread auf einen Mutex?
Ciao,
Sephral
nein, es scheint tatsächlich ein QTimer-Problem zu sein. Der Thread blockiert nicht, er reagiert immer noch auf Signale von den anderen Threads. Nur der QTimer wird nicht ausgelöst (bzw. erst eine halbe Minute später). Mit dem Linux Timer scheint es aber zu klappen. Der Fehler tritt nur auf meinem embedded system auf und immer etwa 4 Minuten nachdem das System hochgefahren ist (nicht nachdem ich das Programm starte). Kann man Trolltech wegen so etwas kontaktieren?
Grüße Stefan
Grüße Stefan