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.