Einzelnen Beitrag anzeigen

Piberg

Registriert seit: 6. Jun 2006
6 Beiträge
 
Delphi 2006 Architect
 
#1

Threadphänomen. Threads terminieren nicht richtig

  Alt 6. Jun 2006, 14:28
Hallo Leute!

Habe folgende Konstellation:
Ein Thread (weiter als Monitorthread) erzeugt und ruft abwechselnd zwei Threads (weiter als KinderThreads) auf.
Diese KinderThreads setzen einzelnd Zeichen ( der eine 'a' bis 'z', der andere '1' bis '9' ) auf der seriellen Schnittstelle ab
und terminieren anschließend.
Nun beobachte ich folgendes Phänomen: Wenn ich den MonitorThread terminiere und dann irgendwann wieder neu erzeuge,
nimmt das zuletzt laufende KinderThread seine Arbeit dort auf, wo er aufhörte, nachdem der Monitorthread terminierte.

z.B '123456789ABCDERF' <MonitorThread terminiert> .... <Neuer MonitorThread erzeugt> 'GHIJKLMNO' <MonitorThread terminiert> .... <Neuer MonitorThread erzeugt> 'PQRST' usw...

Hier ist die Execute des MonitorThreads:
Delphi-Quellcode:
procedure TMonitorThread.Execute;
var T1, T2 : TerzeugerThread;
begin
  while NOT Terminated do
  begin

    T1 := TErzeugerThread.CreateThread(FALSE, '1', '9');
    T1.Priority := tpLowest;
    T1.Resume;
    T1.WaitFor;
    T1.Free;


    T2 := TErzeugerThread.CreateThread(FALSE, 'A', 'Z');
    T2.Priority := tpLowest;
    T2.Resume;
    T2.WaitFor;
    T2.Free;

  end;
end;
Hat Jemand eine Idee, wie sich das erklären lässt? Denn für mich hat es den Anschein, als würde der zuletzt laufende KinderThread nur "schlafengelegt", der dann
später seine Arbeit fortsetzt. Erst danach werden neue Kinder im MonitorThread erzeugt.
  Mit Zitat antworten Zitat