Einzelnen Beitrag anzeigen

bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: THreads in ein Array schreiben

  Alt 26. Mär 2012, 18:21
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;

Geändert von bernhard_LA (26. Mär 2012 um 18:24 Uhr)
  Mit Zitat antworten Zitat