QThread für lange Berechnung
Verfasst: 17. Juli 2007 20:06
Hallo zusammen,
ich habe eine langwierige Berechnung, die zweimal mit jeweils unterschiedlichen unabhängigen Daten ausgeführt werden muss. Ich dachte, die Berechnung kann man auf einem Dual-Core-Rechner gut in eine QThread-Klasse packen und diese dann zweimal aufrufen, so dass beide Datensätze gleichzeitig abgearbeitet werden. Nach dem Start der beiden Threads möchte ich in der Hauptanwendung auf das Ende beider Threads warten und dann soll es mit der Verarbeitung beider Ergebnisse weiter gehen.
Mein Versuch:
in der Hauptanwendung:
der Thread selbst:
Mein Problem:
- Manchmal melden beide Threads, dass sie gestartet wurden - manchmal meldet sich der 2. Thread nicht.
- keiner der Threads kommt an sein Ende (werden sie evtl. durch wait() beendet?)
Mache ich grundsätzlich etwas falsch?
Ich bin für jede Hilfe dankbar.
Ed
ich habe eine langwierige Berechnung, die zweimal mit jeweils unterschiedlichen unabhängigen Daten ausgeführt werden muss. Ich dachte, die Berechnung kann man auf einem Dual-Core-Rechner gut in eine QThread-Klasse packen und diese dann zweimal aufrufen, so dass beide Datensätze gleichzeitig abgearbeitet werden. Nach dem Start der beiden Threads möchte ich in der Hauptanwendung auf das Ende beider Threads warten und dann soll es mit der Verarbeitung beider Ergebnisse weiter gehen.
Mein Versuch:
in der Hauptanwendung:
Code: Alles auswählen
SPromtKBBTransformThread *pTransformThread1, *pTransformThread2;
pTransformThread1 = new SPromtKBBTransformThread();
pTransformThread1->init( /* Daten übergeben */);
pTransformThread2 = new SPromtKBBTransformThread();
pTransformThread2->init( /* andere Daten übergeben */ );
pTransformThread1->start();
pTransformThread2->start();
pTransformThread1->wait();
pTransformThread2->wait();
// Ergebnisse beider Threads weiter verarbeiten
Code: Alles auswählen
void SPromtKBBTransformThread::run(void)
{
// ohne while-Schleife: ganz viel rechnen
}
- Manchmal melden beide Threads, dass sie gestartet wurden - manchmal meldet sich der 2. Thread nicht.
- keiner der Threads kommt an sein Ende (werden sie evtl. durch wait() beendet?)
Mache ich grundsätzlich etwas falsch?
Ich bin für jede Hilfe dankbar.
Ed