Kommunikation zwischen QThreads?
Kommunikation zwischen QThreads?
Hi Qt-Community,
ich entwickle eine Applikation mit mehreren QThreads die parallel laufen.
Zur Kommunikation habe ich SIGNAL/SLOTS benutzt, was im Grunde auch ganz gut funktioniert.
Mir ist allerdings aufgefallen, daß auf einigen Rechnern die CONNECTs eine Wahnsinnsverzögerung aufweisen (eine Sekunde oder so vom emit bis zum slot).
Ich bräuchte Verzögerungen von ca. 20 ms oder weniger.
Inzwischen bin ich auf das gestoßen:
http://lists.trolltech.com/qt-interest/ ... 782-0.html
Hier wird gesagt, man sollte vielleicht stattdessen QEvents benutzen.
Das Posting ist aber recht alt, weiß jemand, wie man am besten mit Qt4 zwischen Threads kommuniziert?
vielen Dank für eure Hinweise,
Stefan K. >8^)
ich entwickle eine Applikation mit mehreren QThreads die parallel laufen.
Zur Kommunikation habe ich SIGNAL/SLOTS benutzt, was im Grunde auch ganz gut funktioniert.
Mir ist allerdings aufgefallen, daß auf einigen Rechnern die CONNECTs eine Wahnsinnsverzögerung aufweisen (eine Sekunde oder so vom emit bis zum slot).
Ich bräuchte Verzögerungen von ca. 20 ms oder weniger.
Inzwischen bin ich auf das gestoßen:
http://lists.trolltech.com/qt-interest/ ... 782-0.html
Hier wird gesagt, man sollte vielleicht stattdessen QEvents benutzen.
Das Posting ist aber recht alt, weiß jemand, wie man am besten mit Qt4 zwischen Threads kommuniziert?
vielen Dank für eure Hinweise,
Stefan K. >8^)
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Aha, dachte ich mir!BartSimpson hat geschrieben:Events sind schneller, falls du ein Beispiel dafür haben willst, sagt Bescheid.(PN mit deiner E-Mail)
Du must aber die GPL akzeptieren.
Trotzdem kanns ja nicht sein, daß man fast 1 Sek Verzögerung hat, das aber nur auf manchen Computern.
Ich schätze es liegt daran, daß zwischen versch. Threads nur queued connections benutzt werden können.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Bin mir jetzt ziemlich sicher, daß es sich nicht um einen Bug in meinem Code handelt.
Habe eine Klasse geschrieben mit einem QTimer, der alle 50ms ein Signal auslöst.
In der überliegenden Klasse habe ich ein connect auf einen SLOT gemacht, der dann ein this->update() aufruft.
Bei geringer CPU-Last habe ich die Verzögerung, leider kaum reproduzierbar (nur auf meinem System, und auch nicht 100% reproduzierbar. Irgendwann gehts plötzlich, nach einem Reboot wieder nicht).
Hat mal jemand "sendPostedEvents" genutzt, damit müßte ich die Event Queue doch leerpusten können, oder?
Caetydid sure does love Windows >8^)
Habe eine Klasse geschrieben mit einem QTimer, der alle 50ms ein Signal auslöst.
In der überliegenden Klasse habe ich ein connect auf einen SLOT gemacht, der dann ein this->update() aufruft.
Bei geringer CPU-Last habe ich die Verzögerung, leider kaum reproduzierbar (nur auf meinem System, und auch nicht 100% reproduzierbar. Irgendwann gehts plötzlich, nach einem Reboot wieder nicht).
Hat mal jemand "sendPostedEvents" genutzt, damit müßte ich die Event Queue doch leerpusten können, oder?
Caetydid sure does love Windows >8^)
pebkac
Hi,
wie fast immer ist nicht Qt schuld sondern der Rest:
Ich habe einen Thread in einer anderen Bibliothek, der Daten von der COM-Schnittstelle liest.
Der kriegt scheinbar Probleme, sobald ich andere QThreads laufen lasse
danke für die Geduld
>8^)
wie fast immer ist nicht Qt schuld sondern der Rest:
Ich habe einen Thread in einer anderen Bibliothek, der Daten von der COM-Schnittstelle liest.
Der kriegt scheinbar Probleme, sobald ich andere QThreads laufen lasse
danke für die Geduld
>8^)