Thread pausieren oder neu starten?
-
SuspendThread ist böse!
http://blog.kalmbachnet.de/?postid=6
http://blog.kalmbachnet.de/?postid=16Verwende ein Event! Das ist weitaus besser.
-
Martin Richter schrieb:
SuspendThread ist böse!
http://blog.kalmbachnet.de/?postid=6
http://blog.kalmbachnet.de/?postid=16Im Zusammanhand mit der CRT und auch nur, weil sie intern ein SynchronisationsObjekt benutzt, wenn ich das richtig verstanden habe.
Durch SuspendThread wird die Freigabe des Sync-Objekts durch den zweiten Thread verhindert und wenn der erste Thread es dann benutzen möchte gibts einen Deadlock.Fazit: SuspendThread/ResumeThread sind nicht grundsätzlich böse. Man muss [wie immer] nur wissen, was man tut.

-
general bacardi schrieb:
Fazit: SuspendThread/ResumeThread sind nicht grundsätzlich böse. Man muss [wie immer] nur wissen, was man tut.

Und von dem Thread des OPs wissen wir nichts... deshlab warne ich hier mal lieber.
-
Wenn du den Thread "öfter" benötigst:
Lass den Thread schlafen, bis du ihn wieder brauchst ( aber unter Beachtung der obigen Hinweise ). Wenn es soweit ist, signalisiere ihm das wie bereits erwähnt, per Event.Gruß Kimmi
-
Dir CRT ist nicht die einzige Code-Stelle wo intern Synchronisations-Objekte verwendet werden.
SuspendThread/TerminateThread sind sogut wie immer böse, jegliche Diskussion darüber ist IMO total sinnlos.
-
Du kannst den Thread ja per WaitForSingleObject mittels SendEvent schlafen und wecken:
http://msdn.microsoft.com/en-us/library/ms687032(VS.85).aspxZumindest wird dieser Ansatz auch von ACE benutzt.
Gruß Kimmi
-
hustbaer schrieb:
SuspendThread/TerminateThread sind sogut wie immer böse, jegliche Diskussion darüber ist IMO total sinnlos.
Und wenn Du böse warst gibts vom Nikolaus keine Geschenke sondern eins mit der Rute auf den Hintern

-
SendEvent?
-
ich denke ich rufe einfach endthread auf wenn stop gedrückt wird und bei start wider beginthread, kenne mich mit events und so nicht so aus. Aber noch ein anderes Problem: Kann der ein und der selbe Thread nur 3 mal zugleich laufen? Ich starte ihn nämlich von 4 verschiedenen Stellen mit unterschiedlichen Parametern, wenn ich ihn das 4. mal starte hört alles auf. Oder ist da ein Bug in meinem Code
-
SetEvent halt...
-
Rezakun schrieb:
Kann der ein und der selbe Thread nur 3 mal zugleich laufen?
Ein Thread kann nur einmal zugleich laufen.
Du kannst aber mehrere (beliebig viele) Threads starten, die alle die gleiche Threadfunktion ausführen.
-
Ops ein Typo, sorry
!Gruß Kimmi