Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Allen Bauer: TThread Suspend/Resume ein "kolossaler

  Alt 2. Aug 2009, 14:50
Zitat von jaenicke:
Ich verstehe allerdings nicht so ganz:[list][*]Erstens warum man Threads benutzt, die so schnell fertig sind. (äußerst ineffizient)
Der Fehler tritt häufiger auf, wenn viele Threads gestartet und beendet werden - also zum Beispiel in einer Serveranwendung, die viele Requests von verschiedenen Clients parallel verarbeitet. Die Wahrscheinlichkeit, dass einer der Threads bereits das Free ausgeführt hat bevor auf seine Instanzvariable zugegriffen wird, hängt auch von der Last (Anzahl Threads) ab. Die absolute Ausführungszeit des Threads ist für das Auftreten des Bugs nicht entscheidend. Kritisch wird es, sobald diese Zeit kleiner als die Zeit ist, die zwischen der Ausführung von zwei Stellen in der Resume Methode vergeht:

Zitat:
The problem is, if there are many threads created and freed, the delay after ResumeThread(FHandle) could be big enough for the thread to finish and free itself before the routine arrives at FSuspended := False.
http://qc.embarcadero.com/wc/qcmain.aspx?d=26291
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat