Timeout mit Threads - wie geht's?
Timeout mit Threads - wie geht's?
Hallo,
ich möchte für eine zeitkritische Funktion ein Timeout von 1 Minute festlegen.
Mein Gedanke war: ein neuer Thread, der 1 Minute wartet und dann den anderen Thread beendet. Es sei denn er hat sich selbst schon vor Ablauf der Minute beendet.
Ich konnte nicht herausfinden, wie ich das mit QThread mache.
Weiß jemand, wie es geht?
Danke, Stevy
ich möchte für eine zeitkritische Funktion ein Timeout von 1 Minute festlegen.
Mein Gedanke war: ein neuer Thread, der 1 Minute wartet und dann den anderen Thread beendet. Es sei denn er hat sich selbst schon vor Ablauf der Minute beendet.
Ich konnte nicht herausfinden, wie ich das mit QThread mache.
Weiß jemand, wie es geht?
Danke, Stevy
Re: Timeout mit Threads - wie geht's?
Das weiss ich nicht, du erklaerst ja nicht genau genug was du moechtest 
"den anderen Thread" koennte z.B. dein GUI Thread sein und fuer "ein neuer Thread" kannst QTimer nehmen.
Deine Anwendung wird dann also nach einer Minute beendet.
Falls du ganz was anderes vor hast, dann solltest das hier mal erklaeren
Goos
Darin steckt leider nur wie du es dir vorgestellt hast und nicht was du eigentlich erreichen magst.stevy hat geschrieben:Hallo,
Mein Gedanke war: ein neuer Thread, der 1 Minute wartet und dann den anderen Thread beendet. Es sei denn er hat sich selbst schon vor Ablauf der Minute beendet.
"den anderen Thread" koennte z.B. dein GUI Thread sein und fuer "ein neuer Thread" kannst QTimer nehmen.
Deine Anwendung wird dann also nach einer Minute beendet.
Falls du ganz was anderes vor hast, dann solltest das hier mal erklaeren
Goos
Es ist kein GUI-Thread. Es geht um zeitaufwändige Berechnungen, die manchmal sehr lange dauern können. Ich möchte praktisch die Möglichkeit haben, diese abzubrechen, wenn ein festgelegtes Timeout überschritten ist. Dabei soll nicht gleich das ganze Programm beendet werden.
Ist das Problem klar geworden?
Ist das Problem klar geworden?
So könnte es gehen
So könnte es gehen:
Die Frage ist nur, ob die Objekte in doCalculations beim Abbruch mit wait auch ordentlich aufgeräumt werden, oder der Thread 'brutal' abgebrochen wird?
Code: Alles auswählen
class ThreadA : public QThread
{
void run()
{
ThreadB* threadB = new ThreadB();
threadB->start();
threadB->wait(60000);
}
}
class ThreadB : public QThread
{
void run()
{
doCalculations();
}
}