Thema: Delphi Thread Deadlock Problem

Einzelnen Beitrag anzeigen

Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#1

Thread Deadlock Problem

  Alt 24. Mär 2009, 15:10
Hallo,

Ich habe ein kleines Problem, mit 2 Threads, die unter umständen in einen Deadlock Zustand kommen können. Ich würde das gerne vollends vermeiden, komme aber auf keinen grünen Zeig.

Der erste Thread ist der MainThread, der einen SubThread startet und stoppt.
Der Subthread führt in einer Schleife einige Datenbankabfragen durch und gibt in jedem Durchlauf Ergebnisse zurück. Sprich er soll sie sofort anzeigen. Da VCL nicht threadsicher ist, mache ich das mit Synchronize, damit das Anzeigen der Hauptthread übernimmt. Soweit so gut, das funktioniert auch.
Nun weist der Haupthread aber irgendwann (zufällig durch Usereingabe) den Subthread zum halten an und wartet, bis dieser beendet ist. Der Subthread muss aber kontrolliert angehalten werden und den aktuellen Schleifendurchlauf beenden. Jetzt kann es vorkommen, dass da ein Synchronize steht. Hier wartet der Subthread dann, bis der Hauptthread die Anweisung ausgeführt hat. Der macht das aber nicht, weil er selbst auf die beendigung des Subthreads wartet.

Egal wie ich es drehe, ich komme zu keiner vernünftigen Lösung.
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat