Fragen zur Thread-Programmierung
Verfasst: 6. Dezember 2008 20:04
Hallo,
da ich mich gerade mit Multithreading beschäftige, ein paar Fragen.
Hintergrund ist der: Ich lese Daten von einem CAN2USB-Dongle ein, speichere diese zwischen und lese sie anschließend aus um sie anzeigen zu können. Für diese Aufgabe stelle ich mir zwei Threads vor, welche sich gegenseitig über mutex sperren können.
Meine Fragen im Konkreten:
- was ist genau der Unterschied zwischen run() und exec() und was hat es mit den beiden Funktionen auf sich? Ich habe von Java und anderen echtzeitfähigen Programmiersprachen noch im Hinterkopf, dass sich im Kern jedes Threads eine while(true)-Schleife befindet. Dem ist in den Qt Beispielen allerdings nicht so.
- wie realisiere ich am geschicktesten den Aufruf von QPainter um die Daten zu zeichnen? Bisher habe ich testweise einfach einen Timer herunterlaufenlassen und dann die update()-Funktion aufgerufen. Soll ich weiterhin in dem Thread einfach die update()-Funktion aufrufen? Oder einfach einen neuen im Thread erstellen und dann zeichnen lassen? Hierbei weiß ich allerdings nicht, wie sich Qt verhalten wird, da man ja QPainter immer wieder schließen soll.
- ist es besser die beiden Threads über Signale und Slots zu sychronisieren als über mutex?
Danke für die Antworten,
Thomas
da ich mich gerade mit Multithreading beschäftige, ein paar Fragen.
Hintergrund ist der: Ich lese Daten von einem CAN2USB-Dongle ein, speichere diese zwischen und lese sie anschließend aus um sie anzeigen zu können. Für diese Aufgabe stelle ich mir zwei Threads vor, welche sich gegenseitig über mutex sperren können.
Meine Fragen im Konkreten:
- was ist genau der Unterschied zwischen run() und exec() und was hat es mit den beiden Funktionen auf sich? Ich habe von Java und anderen echtzeitfähigen Programmiersprachen noch im Hinterkopf, dass sich im Kern jedes Threads eine while(true)-Schleife befindet. Dem ist in den Qt Beispielen allerdings nicht so.
- wie realisiere ich am geschicktesten den Aufruf von QPainter um die Daten zu zeichnen? Bisher habe ich testweise einfach einen Timer herunterlaufenlassen und dann die update()-Funktion aufgerufen. Soll ich weiterhin in dem Thread einfach die update()-Funktion aufrufen? Oder einfach einen neuen im Thread erstellen und dann zeichnen lassen? Hierbei weiß ich allerdings nicht, wie sich Qt verhalten wird, da man ja QPainter immer wieder schließen soll.
- ist es besser die beiden Threads über Signale und Slots zu sychronisieren als über mutex?
Danke für die Antworten,
Thomas