Hallo,
wie sicher kann ich mir eigentlich sein, dass der Code einer Prozedur wirklich immer an einem Stück abläuft:
Delphi-Quellcode:
var sl: TStringList;
procedure MachWas;
var i:integer;
begin
i := sl.items.indexof('test');
// hier unterbrechung möglich?
sl.items[i] := 'test2'
end;
procedure ThreadIstZuEnde;
begin
sl.clear;
end;
Was ist, wenn die Prozedur ThreadIstZuEnde im OnTerminate Ereignis eines Threads aufgerufen wird und der Thread zufällig genau nach der indexof-Zeile in der MachWas Prozedur zu ende ist.
Wartet ThreadIstZuEnde, kein Code mehr abgearbeitet wird und statet dann?
Gibt es sozusagen einen Aufruf Stack? Also alles was vor dem OnTerminateEreignis bereits aufgerufen wurde, aber noch nicht anfangen konnte, wird abgearbeitet?
Oder wartet ThreadIstZuEnde immer solange, bis der Hauptthread gar nichts mehr zu tun hat und wird erst dann ausgelöst?
Gruß,
changlee