Da gibt es drei Varianten:pfid hat geschrieben:Finger weg ist in meinen Augen etwas übertrieben. Was wenn der Thread aus irgendwelchen Gründen hängt, und sich nicht beenden lässt?
1) falls du den kompletten Code selbst in der Hand hast: ein Thread hat sich gefaelligst nicht aufzuhaengen!
2) falls externe Klassen/Methoden verwendet werden:
2a) egal... dann haengt halt die komplette app.. dann muss der User entscheiden.
2b) dann wird der Thread halt gekillt... mit allen Konsequenzen.....!
Genau da liegt der Hund begraben... der Thread kann irgendwo gekillt werden. Wenn du z.B. aus dem Thread eine (externe) Funktion aufrufst welche kurzzeitig dynamisch Speicher benoetigt und mittendrinn gekillt wird, wie willst du dann diesen Speicher wieder freigeben? Oder wenn eine Instanz einer (externen) Klasse dynamischen Speicher verwaltet und diese Instanz auf dem Stack angelegt wird:pfid hat geschrieben: ...Alles was der User allokiert hat, muss logischerweise der User wegräumen, was allerdings von der Nebenläufigkeit unabhängig ist.
Sprich: das Objekt kann der User auch nach QThread::terminate löschen, wenn dort immer noch der Speicher wächst, fehlt vielleicht irgendwo ein delete?
Code: Alles auswählen
... run() {
if (...) {
QString s("dingsda");
...
... // hier wird der Thread gekillt -> MLK
} // DTor von "s"
}