Einzelnen Beitrag anzeigen

UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#1

[Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 08:29
Es gibt da so ein nettes Beispiel für die Anwendung von Threads im Zusammenhang mit Mehrkern-CPUs.
Zum Programm dBPowerAmp gibt es einen Konverter welcher irgendwelche Musikdateien im Batch in ein anderes Format umwandelt.
Und dabei zeigt sich beim Wandeln in mp3 das im Anhang dargestellte Bild.

Es wird also festgestellt, wieviele CPU-Kerne, also reale und virtuelle, vorhanden sind. Jedem Kern wird dann die Umwandlung einer Datei als Aufgabe/Thread zugeteilt. Wenn ein Kern fertig ist, bekommt er die nächste Datei beauftragt. Hübsch gemacht ist dabei auch die Fortschrittsanzeige. Bei dieser Art von Bearbeitung sind die Teilaufgaben voneinander unabhängig.

Ich würde so eine Grundstruktur einer Threaderstellung und -bearbeitung gerne mit Delphi realisieren.
Dazu braucht es ja wohl
eine Prozedur, die die Anzahl der Kerne feststellt
eine Organisation, die die Gesamtaufgabe verwaltet
eine Zuweisung eines Threads zur Bearbeitung einer Teilaufgabe an einen nächsten freien Kern *
Strukturen, die das Anhalten bzw. Beenden (Pause, Cancel) ermöglichen als auch die Fortschrittsanzeige realisieren.

So stell ich mir das bescheidenerweise vor. Da ich praktisch keine Erfahrung mit Threads habe, hoffe ich, hier Tipps bzw. Code-Snippets zu bekommen, mit denen ich das realisieren kann. Die Struktur sollte für beliebige ähnliche gelagerte Aufgaben, die unabhängig voneinander parallel laufen können, geeignet sein.

Uli

* wann ist ein Kern eigentlich als frei zu betrachten? Es laufen ja parallel noch beliebig andere Prozesse inkl. der o.g. Organisation der Threads.
Miniaturansicht angehängter Grafiken
threads.png  
  Mit Zitat antworten Zitat