Einzelnen Beitrag anzeigen

changlee
(Gast)

n/a Beiträge
 
#1

Verständnisfrage: Programmablauf ohne Unterbrechung?

  Alt 13. Feb 2010, 14:02
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
  Mit Zitat antworten Zitat