Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kein wirklicher Geschwindigkeitsvorteil durch Threads? (https://www.delphipraxis.net/174790-kein-wirklicher-geschwindigkeitsvorteil-durch-threads.html)

creed steiger 12. Mai 2013 16:02

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?
 
Wenn ich dich richtig verstanden habe,startest du doch nur ein externes Programm mehrmals mit verschiedenen Parametern.
Die Laufzeit deines Programms ist also hauptsächlich von der Geschwindigkeit des aufgerufenen Programms abhängig.
powaitonexit bewirkt bei Tprocess das bis zum Ablaufende des Programms gewartet wird.

Ich würde einfach die benötigten TProcesse ohne powaitonexit erzeugen und in eine Objectlist stopfen
um dann mit running bzw. Exitstatus prüfen ob sie noch laufen/wie sie beendet wurden.

Deswegen bringen meiner Meinung nach Threads da keinen großartigen Vorteile.
Ist aber bestimmt eine gute Übung.

http://lazarus-ccr.sourceforge.net/d...xitstatus.html
http://lazarus-ccr.sourceforge.net/d...s.running.html

Ginko 12. Mai 2013 21:36

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?
 
Zitat:

Zitat von creed steiger (Beitrag 1215136)
Wenn ich dich richtig verstanden habe,startest du doch nur ein externes Programm mehrmals mit verschiedenen Parametern.

Ja ganz genau.

Zitat:

Zitat von creed steiger (Beitrag 1215136)
Ich würde einfach die benötigten TProcesse ohne powaitonexit erzeugen und in eine Objectlist stopfen um dann mit running bzw. Exitstatus prüfen ob sie noch laufen/wie sie beendet wurden.

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 Prozesse von einer Warteliste geholt. Ein OnTerminate Event hat TProcess ja leider nicht, dann müsste es ja auch ohne Timer gehen oder ?

[Edit] So ein Event könnte ich ja einer abgeleiteten Klasse von TProcess hinzufügen. Das werde ich mal noch versuchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr.
Seite 5 von 5   « Erste     345   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz