Forum: Programmieren allgemein
by Ginko,
12. Mai 2013
Ja ganz genau.
Das hatte ich Heute auch gemacht. Es läuft auch alles so wie ich es will. Also ich kann jetzt die Anzahl beschränken. Die Geschwindigkeit ist ca. die selbe wie mit Threads(unbegrenzt).
Um den ExitStatus abzufragen habe ich einen Timer verwendet, der die Prozesse in einer TList überprüft (jede Millisekunde). Wenn sie beendet wurden, werden sie dann gelöscht und neue...
Forum: Programmieren allgemein
by Ginko,
11. Mai 2013
So hat sich doch gelohnt, also vorher waren es ca. 27sek jetzt sind es ca. 15sek. Also fast doppelt so schnell und beide Kerne sind bei voller Last für die Zeit.
Den Zeittest habe ich so gemacht:
private
{ private declarations }
procedure CountDown(Sender: TObject);
public
{ public declarations }
end;
Forum: Programmieren allgemein
by Ginko,
10. Mai 2013
Ok danke das werde ich mal versuchen.
Forum: Programmieren allgemein
by Ginko,
10. Mai 2013
Gibt es einen Weg die Dauer des gesamten Vorgangs zu messen ?
procedure TForm1.Button8Click(Sender: TObject);
var
DateienLst: TSearchRec;
Thread1: TMyThread1;
//Zeittest
freq: Int64;
startTime: Int64;
endTime: Int64;
begin
Forum: Programmieren allgemein
by Ginko,
10. Mai 2013
Das mit den 16 Threads hab ich auch vor kurzem irgendwo gelesen...
Ahh hier war es http://docwiki.embarcadero.com/Libraries/XE2/de/System.Classes.TThread
" Auf einem Ein-Prozessor-System stellen 16 aktive Threads die praktikable Obergrenze dar. "
Forum: Programmieren allgemein
by Ginko,
10. Mai 2013
Ja das war eigentlich auch nur ein erster Versuch überhaupt das ganze mit Threads zum laufen zu bringen. Ich hatte auch vor die Anzahl zu beschränken, im Taskmanager sieht das so aber sehr lustig aus....
Forum: Programmieren allgemein
by Ginko,
10. Mai 2013
Nein wollte ich nicht. Aber anders ist die erste Version immer abgestürzt....
Forum: Programmieren allgemein
by Ginko,
10. Mai 2013
Hey danke nochmal für die vielen Antworten, ich hab es jetzt mal (trotz allen bedenken) mit einem Thread-Objekt (noch etwas unfertig) gemacht. Das ganze wird so in einem Bruchteil erledigt. Hier mal der Code.
Wie gesagt noch nicht ganz fertig... Wie kann man die Zeit von dem ganzen Ablauf Messen ? Vorher habe ich das mit dem QueryPerformanceCounter gemacht in der ButtonClick Prozedur. Aber die...
Forum: Programmieren allgemein
by Ginko,
9. Mai 2013
Also die Funktion Umwandler sieht so aus:
function Umwandler(pDateiname: Pointer): Integer;
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
try
AProcess.Executable := ExtractFilePath(application.ExeName)+'Umwandler.exe';
AProcess.Parameters.Add(PThreadParams(pDateiname)^.Dat);
AProcess.Options := AProcess.Options + ;
Forum: Programmieren allgemein
by Ginko,
9. Mai 2013
Ok, werde ich machen, kennt ihr ein paar gute Links zu dem Thema ?
Einen hab ich grad gefunden http://www.michael-puff.de/Programmierung/Delphi/Tutorials/Threads_mit_Delphi.pdf, ich seh grad der ist so umfangreich, der langt sicher erstmal...
@Der schöne Günther, das habe ich ja alles gemacht in der Funktion Umwandler
Forum: Programmieren allgemein
by Ginko,
9. Mai 2013
Also wäre hier ein Array von Threadhandles sinnvoll ?
Forum: Programmieren allgemein
by Ginko,
9. Mai 2013
Danke für die schnelle Antwort !
Wird durch die Schleife nicht direkt ein neues Thread aufgemacht ?
Forum: Programmieren allgemein
by Ginko,
9. Mai 2013
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)
type
TThreadParams = packed record
// Number: Integer;
Dat: string;
end;
PThreadParams = ^TThreadParams;
function Umwandler(pDateiname:...