Parameterübergabe an einen Thread

Parameterübergabe an einen Thread

Beitragvon Scotty » 27. Sep 2012, 14:49 Parameterübergabe an einen Thread

Ich benutze einen Algorithmus mit Threads, der in etwa so aussieht:
Code: Alles auswählen
type 
  TOperation=class
    procedure Run;
  end;
  TMyThread=class(TThread)
    constructor Create(aOp:Toperation)
  end;
 
for i:=0 to OperationList.Count-1 do
  TMyThread.Create(TOperation(OperationList[i]));
 
constructor TMyThread.Create(aOp:TOperation);
begin
  inherited Create(true);
  FOp:=aOp;
  Start;
end;
 
procedure TMyThread.Execute;
begin
  FOp.Run;
end;

Das klappt unter Linux und Windows ganz gut, aber Darwin hat zu 100% nach kurzer Zeit EXC_BAD_ACCESS ausgeworfen. Ich habe rumprobiert und dabei die Parameterübergabe geändert.

Code: Alles auswählen
TMyThread=class(TThread)
    constructor Create;
    property Operation:TOperation read write;
  end;
 
for i:=0 to OperationList.Count-1 do
begin
   aThread:=TMyThread.Create;
   aThread.Operation:=TOperation(OperationList[i]);
   aThread.Start;
end;

Damit läuft die Routine plötzlich problemlos. Kann mir das jemand erklären?
Scotty
 
Beiträge: 770
Registriert: 4. Mai 2009, 12:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4 | 
CPU-Target: x86_64-linux-qt/gtk2
Nach oben

• Themenende •

Zurück zu MacOS



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried