Tråde, synkronisering
Hej!Jeg er i gang med at lave et program i delphi der bruger multithreading..
I den sammenhæng har jeg et varierende antal tråde, der hver har en event, der hedder OnStatusUpdate som sætter en StatusHandler (TNotifyEvent) til at pege på en procedure. Trådene kalder så hver især deres egen statushandler (altså hvad den peger på) fra tid til anden.
Nu er det så, at jeg har alle mine trådes statushandler til at pege på den samme procedure i hovedprogrammet, som ser nogenlunde sådan her ud:
procedure TForm1.NewStatus(Sender: TObject);
var
f: textfile;
begin
assignfile(f, \'c:\\log.txt\');
reset(f);
writeln(f, (sender as mythread).status.time, \': \', (sender as mythread).status.info);
closefile(f);
end;
Som den håbløse selvlærte amatør jeg er, aner jeg selvfølgelig ikke en fløjt om, hvordan tråde i bund og grund fungerer..
Har hver tråd en instruction pointer der peger på det samme sted i noget shared hukommelse? (altså på denne procedure)? Eller hvordan fungerer det?
Problemet er, at der nogen gange kommer nogen ret mærkelige halve linier i log-filen, der så brat afbrydes af en ny indgang.. Programmet skulle gerne kunne køre sig selv i en rum tid ad gangen, og jeg er lidt bange for, at det også går ned pga. at dette er lavet forkert..
Hvordan BURDE man lave det her?