QThread.terminate() unter Linux
QThread.terminate() unter Linux
Subj. wird nicht ausfgeführt. Der Thread laüft einfach weiter...
Unter Win ist alles OK.
Ideen?
Unter Win ist alles OK.
Ideen?
ich habe folgende Situation:
gegeben ist:
a) ein Qt Programm
b) eine Nicht-QT Dll, die auch nicht an Qt-Programm gelinkt ist.
b enthält eine Funktion, die eine lange Berechnung durchführt.
Das Programm a lädt zur Laufzeit Dll b. Der Benutzer hat nun die Möglichkeit, die Berechnung zu starten. Es kann aber sein, dass diese abgebrochen werden muss. z.B. wenn die Berechnungsparameter falsch gesetzt sind, oder wenn der Benutzer kein Bock hat, lange zu warten.
Daher läuft der Aufruf der Berrechungsmethode in einem separaten Thread...
Ich versuche auch sicher zu terminieren, etwa so:
while(thread.running())
thread.terminate();
aber das bringt auch nix.... Das Ding läuft und läuft....
gegeben ist:
a) ein Qt Programm
b) eine Nicht-QT Dll, die auch nicht an Qt-Programm gelinkt ist.
b enthält eine Funktion, die eine lange Berechnung durchführt.
Das Programm a lädt zur Laufzeit Dll b. Der Benutzer hat nun die Möglichkeit, die Berechnung zu starten. Es kann aber sein, dass diese abgebrochen werden muss. z.B. wenn die Berechnungsparameter falsch gesetzt sind, oder wenn der Benutzer kein Bock hat, lange zu warten.
Daher läuft der Aufruf der Berrechungsmethode in einem separaten Thread...
Ich versuche auch sicher zu terminieren, etwa so:
while(thread.running())
thread.terminate();
aber das bringt auch nix.... Das Ding läuft und läuft....
Ok, dann hast du ein Problem 
Mir faellt dafuer keine schoene Loesung ein, ausser wirklich an der Dll rumzubasteln und zu versuchen die Berechnungen doch nur moeglichst wenig zu beeinflussen. (Sowas hat man ja schon oefter mal, gerade bei Berechnungen. Wer da auf abbrechen drueckt muss erstmal mindestens 20 Sekunden warten, bis auch wirklich was abgebrochen wird)
Ich hatte uebrigens auch unter Windows schon diverse Probleme mit dem terminate() und meide es deshalb jetzt.
Goos
Mir faellt dafuer keine schoene Loesung ein, ausser wirklich an der Dll rumzubasteln und zu versuchen die Berechnungen doch nur moeglichst wenig zu beeinflussen. (Sowas hat man ja schon oefter mal, gerade bei Berechnungen. Wer da auf abbrechen drueckt muss erstmal mindestens 20 Sekunden warten, bis auch wirklich was abgebrochen wird)
Ich hatte uebrigens auch unter Windows schon diverse Probleme mit dem terminate() und meide es deshalb jetzt.
Goos
Re: QThread.terminate() unter Linux
Schon mal die harte Variante probiert?lepsai hat geschrieben:Subj. wird nicht ausfgeführt. Der Thread laüft einfach weiter...
Unter Win ist alles OK.
Ideen?
Code: Alles auswählen
if (m_pProcess->isRunning())
{
m_pProcess->tryTerminate();
QTimer::singleShot( 5000, m_pProcess, SLOT( kill() ) );
}