im Ereignis Thread.Create(....) übergebe ich ein Array
ancc vom Typ array or array of Real
Bei dem Aufruf von Thread.Execute; schreibt die letzte Anweisung in ein bestimmtetes Segment von ancc. Jeder Thread soll in ein bestimmtest Segment schreiben, die Segmente haben keine Überlappung.
Leider schreibt nur der erste THread seine Daten richtig in mein Array ancc , die anderen Threads scheinen überhaupt nichts am Feld zu verändern
Delphi-Quellcode:
TFASTNCCThread =
class(TThread)
private
FSearchArea : TRect;
Ftemplatefct : T2Dfct;
Ffeaturefct : T2Dfct;
FnccGlobal : T2Dfct;
FNCCLocal : T2Dfct;
protected
procedure Execute;
override;
public
constructor create(atemplatefct, afeaturefct : T2Dfct;
var ancc : T2Dfct ; aSearchArea: TRect );
end;
constructor TFASTNCCThread.create( atemplatefct, afeaturefct : T2Dfct;
var ancc : T2Dfct ; aSearchArea: TRect );
begin
inherited Create(True);
FSearchArea := aSearchArea;
ftemplatefct := atemplatefct;
ffeaturefct := afeaturefct;
FnccGlobal:= ancc;
end;
procedure TFASTNCCThread.Execute;
begin
NameThreadForDebugging('
FASTNCCThread');
{ Thread-Code hier einfügen }
try
fastcrosscorrelation( ...... );
except
// on e : exception do
// begin
// do something in case of an error
// end;
end;
NCCCopyLocalArraytoGlobalArray(FnccLocal, FnccGlobal, fsearchArea );
// write back results to ancc array
end;