Qt: qthread zerstört, während der Thread beim Schließen noch läuft

8

Ich habe eine Klasse:

%Vor%

In seinem Konstruktor habe ich:

%Vor%

Wenn ich den Destruktor dieser Klasse aufgerufen habe, bekomme ich die Fehlermeldung:

%Vor%

Aber wenn ich versuchte, den monitorThread im Destruktor der Klasse centralDataPool zu beenden,

%Vor%

Ich bekomme Speicherverlust.

Was ist der richtige Weg, um einen Thread während der Zerstörung seines Besitzerobjekts zu beenden?

    
Nyaruko 22.02.2015, 17:25
quelle

1 Antwort

12

Sie sollten beachten, dass Sie, wenn eine Schleife in einer Funktion Ihres Threads ausgeführt wird, diese explizit beenden sollten, um den Thread ordnungsgemäß zu beenden.

Sie können in Ihrer Klasse eine Membervariable namens finishThread haben, die auf true gesetzt werden soll, wenn die Anwendung geschlossen wird. Stellen Sie einfach einen Slot zur Verfügung, in dem Sie den Wert für finishThread festlegen. Wenn Sie den Thread beenden möchten, geben Sie ein Signal aus, das mit einem true -Wert an diesen Slot angeschlossen ist. finishThread sollte in der Schleifenbedingung bereitgestellt werden, um es zu beenden, wenn es auf true gesetzt ist. Warten Sie danach, bis der Thread für einige Sekunden ordnungsgemäß beendet wurde, und erzwingen Sie, dass der Thread beendet wird, wenn er nicht beendet wurde.

Sie können also in Ihrem Destruktor haben:

%Vor%     
Nejat 23.02.2015, 05:10
quelle

Tags und Links