Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Thread Aufgabenliste abarbeiten lassen (https://www.delphipraxis.net/147902-thread-aufgabenliste-abarbeiten-lassen.html)

Patrick 18. Feb 2010 16:29


Thread Aufgabenliste abarbeiten lassen
 
Hallo,

Ich habe folgendes Problem:
Ich habe eine Reihe von Bildern (z.B.30), die ich mit ein und derselben Funktion bearbeiten möchte. In der heutigen Zeit möchte ich dann doch ganz gerne Threads einsetzen um eine Mehrkern CPU auch voll aus zu lasten. Jetzt kann ich natürlich hingehen und 30 Threads erzeugen, für jedes Bild einen. Da ich das aber für ein wenig übertrieben halte würde ich die Anzahl der Threads gerne an der Anzahl der CPU Kerne festmachen. Nun muss ich 30 Tasks auf z.B. 2 Threads aufteilen.

Nun zu meiner Frage. Gibt es einen simplen Weg einem Thread eine Aufgabenliste zukommen zu lassen, und sie gegebenenfalls später zu ergänzen? Vielleicht sogar in Form von Prozeduren, bei denen der Thread erst zur Laufzeit erfährt, welche Prozedur er ausführen soll? (Dann könnte ein und das selbe Thread-Objekt verschiedene Funktionen bearbeiten.)

Delphi-Quellcode:
Thread0.AddTask(Task1);
Thread1.AddTask(Task2);
Thread0.AddTask(Task3);
Thread1.AddTask(Task4);
Thread0.AddTask(Task5);
...
Vielleicht zur Klarheit meiner Beschreibung: Task = Funktion = Aufgabe (alles das selbe);-)

sirius 18. Feb 2010 16:31

Re: Thread Aufgabenliste abarbeiten lassen
 
Du erstellst eine globale Aufgabenliste und immer wenn ein Thread grad nix zu tun hat, holt er sich eine Aufgabe dieser Liste.

Schau mal nach TWorkerThread o.ä.

Patrick 19. Feb 2010 08:49

Re: Thread Aufgabenliste abarbeiten lassen
 
Ah danke!

"TWorkerThread" umgeschrieben mit einem Strategie-Pattern ist genau das was ich suche.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.

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