Ermitteln ob ein Thread noch lebt?
-
Hallo,
bin grad am Debuggen meiner "multi"-Thread anwendung! Habe das gefühl das ein Thread gekillt wird, und nun die Frage! Kann ich über das Handle oder ID Checken ob der Thread noch läuft?grüße
-
Was meinst du mit "lebt"? Du kannst per WaitForSingleObject() und Co. feststellen, ob der Thread noch existiert (zumindest solange wie dein Handle noch gültig ist). Um festzustellen, ob der Thread noch reaktionsfähig/-bereit ist, mußt du dir einen eigenen Mechanismus vorbereiten.
-
Was hat das mit C++ zu tun? Mag sein, dass es für deine Plattform ein Tool gibt, dass das kann oder vielleicht kann das dein Debugger.
Aber wie soll denn ein Thread ausversehen gekillt werden?
-
da nun nicht verraten hast, wo du deinen thread nutzt, kann ich dir nur sagen: es gibt normalerweise einen isRunning() oder ähnlich lautenden befehl, der überprüft, ob der thread gerade läuft.
-
Ja hab da einige symthome, wobei die syncronisation "soweit" funktioniet! Da problem ist das es ab unzu klaptt und ab und zu nicht.. vll. doch ein sync. Problem! Habe in den Thread schleifen debug ausgaben drin, und es scheint mir das plötzlich ein thread beendet wird, was eigentlich einfach so nicht geht! Was passiert denn, wenn ich auf ein fertigen thread "watiforsingleObjct" anwenden?
-
WaitFor... warten darauf, daß Sync-Objekte signalisiert werden (Events gesetzt etc) - bei Threads steht das für "beendet". D.h. du kannst die Rückgabe von
WaitForSingleObject(my_thread,0)auswerten und erhältst entweder WAIT_OBJECT_0 (Thread wurde beendet) oder WAIT_TIMEOUT (Thread läuft noch)*.Aber eventuell solltest du dir mal im Debugger ansehen, was da wirklich los ist.
* oder WAIT_FAILED - aber dann ist vermutlich dein Thread-Handle nicht mehr gültig.
-
ja muss ich mir Morgenfrüh mit klaren Kopf nochmal anschaun:) Seltsame Alomanien;)
-
So jetzt..
Morgens ist man halt einfach Mental und Geistig fitter:) Das Problem war, das der Thread wirklich aufeinmal Tod war, ohne Kill oder Exit Thread aufzurufen! Grund war, das ich ein dyn. Sleep Variablen hatte, wear die kleiner 0 dann hast den Thread aufgelöst:)
-
jaja, multithreading mit bedacht einsetzen
häufig schiesst man sich damit eher ins bein, als dass es nen echten vorteil bringt :p
-
jepp, bei mir gehts leider nich ohne... aber solangsam komm ich in die Mutlithreading Parallel/Syncronisations-Denken

-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.