Hallo!
Vor einigen Monaten bin ich bei Delphi auf ein größeres Problem im Zusammenhang mit Threads gestoßen, dass beim Suspenden des Threads über TThread.Suspend zum Einfrieren der kompletten Applikation durch Deadlock führen kann. Eine genauere Beschreibung und ein Beispielprojekt habe ich
hier gepostet. Zur Lösung des Problems habe ich damals eine Unit geschrieben, die einen TThread-Descendant mit überschriebenem Terminated-Property und Suspend-Methode enthält. Diese möchte ich euch nicht vorenthalten. Sie befindet sich im Anhang, inkl. Erklärungen.
TSuspdSafeThread sollte jeden TThread ersetzen, der mit Suspend angehalten wird und entweder selbst threadübergreifend genutzte Critical Sections benutzt oder indirekt in der RTL solche Critical Sections betritt (z.B. GetMem, FreeMem - also fast jeder Thread).
Moderiert von Udontknow: Topic aus Neue Einträge / Hinweise / etc. verschoben am Do 20.10.2005 um 15:29
In the beginning, the universe was created. This has made a lot of people very angry, and is generally considered to have been a bad move.