Einzelnen Beitrag anzeigen

Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#1

Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 21:28
Hallo, ich versuche gerade mehrere Dateien zu bearbeiten. Um das ganze zu beschleunigen, versuche ich es mit Threads zu machen. Es bringt aber nur ca 1sek. Bei der Auslastung wurde auch nur ein CPU beansprucht (die andere nur ein wenig)

Delphi-Quellcode:
type
  TThreadParams = packed record
   // Number: Integer;
    Dat: string;
  end;
  PThreadParams = ^TThreadParams;

function Umwandler(pDateiname: Pointer): Integer;
begin
... Umwandlung
end;

procedure TForm1.Button7Click(Sender: TObject);
var
  DateienLst: TSearchRec;
  id: Cardinal;
  ExitCode : Cardinal;
  tp : TThreadParams;
  threadhandle: THandle;
begin
  if FindFirst(Directory + '*.txt', faAnyFile and not faDirectory, DateienLst) = 0 then
    try
      repeat
        tp.Dat:= Directory+DateienLst.Name;
        threadhandle:= system.BeginThread(nil,0,@Umwandler,@tp,0,id);

        WaitForSingleObject(threadhandle, INFINITE);
        GetExitCodeThread(threadhandle, ExitCode);
        case ExitCode of
          IDYES: Writeln('Benutzer hat "Ja" angeklickt.');
          IDNO: Writeln('Benutzer hat "Nein" angeklickt.');
        end;
        CloseHandle(threadhandle);
      until FindNext(DateienLst) <> 0;
    finally
      SysUtils.FindClose(DateienLst);
    end;
end;

Geändert von Ginko ( 9. Mai 2013 um 21:43 Uhr)
  Mit Zitat antworten Zitat