![]() |
[Delphi] Thread-Organisation mit Mehrkern-CPUs
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Für so etwas gibt es mehr oder minder umfangreiche Bibliotheken. Spontan fällt mir da
![]() ![]() |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Es gibt in der DP einige Ansätze zu einem
![]() Für das Feststellen der ![]() Die Kommunikation mit dem Job, der von Thread ausgeführt wird, musst du dir vmtl. selbst stricken. PS: Mir fällt gerade erst auf, dass Thread-Pools so etwas wie Scheduling auf Anwendungsebene sind :roteyes: |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Ja, die OTL ist eine gute Wahl.
Mit dem ForEach oder mit den Pipelines kann man das prima machen. Allerdings würde ich von der Idee Abstand nehmen eine bestimmte Aufgabe einer bestimmten CPU zu geben. Lass das lieber das OS entscheiden. Entwickler Magazin (Ausgabe: 05.11) Artikel: Multithreading mit der Omni Thread Lib (OTL) |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Guten Morgen,
willst Du bestimmte ![]() Bei einem Threadpool wird das OS die Verteilung übernehmen. Die Threadpoolgröße könnte dann abhänging von der Kernanzahl sein z.B. zwei Threads pro Kern. Grüße Klaus |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Also ich möchte gerne rechenintensive Prozesse (Convolution) im Zusammenhang mit mehrkanaliger Audioausgabe so effektiv wie möglich gestalten. Anstelle nun einen Kanal nach dem andern zu bearbeiten, kann ich ja eben die vorhandenen CPU-Kerne nutzen. Wobei mir aufgefallen ist, dass bei einer einfachen Threadvergabe nun nur bis vier Kerne beschäftigt sind, aber eben nicht alle acht.
Mmh, das es OTL gibt weiss ich auch. Aber bisher hab ich den Aufwand gescheut mich da reinzuarbeiten. Wie immer ist der Anfang schwierig, weil ziviel Info. Andererseits war mir eben nun aufgefallen, wie locker das in der Anwendung bei dBPowerAmp aussieht. Dort wird ja gezielt den Kernen zugewiesen. Was ja all den Meinungen widerspricht, die hier in anderen Beiträgen vertreten wurden. So mit Inhalt: Finger weg von SetThreadAffinityMask, lass dass das OS selber machen. Es scheint wohl doch kein klares Rezept zu geben. |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
lade die die Heft Beispiele herunter. Diese sind aufs Minimum reduziert.
Alternativ lade dir die Beispiele von den Delphi-Tagen 2011 runter. Da habe ich auch mini Beispiele gezeigt. |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Zitat:
|
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Zitat:
Wenn ich Dir das jetzt hier reinstelle, gibt es wohl Ärger. Es gibt von dem Entwickler von OTL ein gutes Video auf Coderage 6 und dieser beginnt auch mit einem Wiki auf seiner Seite. |
AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs
Ok, ich befasse mich mal mit OTL - es gibt da ja einen Haufen Doku - und komme dann mit Fragen zurück, so ich sie denn (sicher) haben werde :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
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